Index: lams_common/src/java/org/lamsfoundation/lams/etherpad/util/EtherpadUtil.java
===================================================================
diff -u -r5ce80833bb0828de219fc5b59e9e73c365da8559 -rb616b4a2df3217f70583fa5f62a59a1488b33f84
--- lams_common/src/java/org/lamsfoundation/lams/etherpad/util/EtherpadUtil.java (.../EtherpadUtil.java) (revision 5ce80833bb0828de219fc5b59e9e73c365da8559)
+++ lams_common/src/java/org/lamsfoundation/lams/etherpad/util/EtherpadUtil.java (.../EtherpadUtil.java) (revision b616b4a2df3217f70583fa5f62a59a1488b33f84)
@@ -4,7 +4,19 @@
public class EtherpadUtil {
+ /**
+ * Produces a standard, pretty meaningless Etherpad ID.
+ */
public static String getPadId(String groupId) {
return groupId + "$" + IEtherpadService.DEFAULT_PAD_NAME;
}
+
+ /**
+ * If Etherpad intial content is not well formed, Etherpad server throws an exception.
+ */
+ public static String preparePadContent(String rawContent) {
+ String cleanContent = rawContent == null ? ""
+ : rawContent.trim().replaceAll("[\n\r\f]", "").replaceAll(" ", "");
+ return "
" + cleanContent + "";
+ }
}
Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dao/hibernate/DokumaranUserDAOHibernate.java
===================================================================
diff -u -r3b951be8d201e41a829d079895d30c9b51fd1dce -rb616b4a2df3217f70583fa5f62a59a1488b33f84
--- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dao/hibernate/DokumaranUserDAOHibernate.java (.../DokumaranUserDAOHibernate.java) (revision 3b951be8d201e41a829d079895d30c9b51fd1dce)
+++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dao/hibernate/DokumaranUserDAOHibernate.java (.../DokumaranUserDAOHibernate.java) (revision b616b4a2df3217f70583fa5f62a59a1488b33f84)
@@ -74,12 +74,13 @@
@Override
@SuppressWarnings("unchecked")
public List getBySessionID(Long sessionId) {
- return this.doFind(FIND_BY_SESSION_ID, sessionId);
+ return (List) this.doFind(FIND_BY_SESSION_ID, sessionId);
}
+ @SuppressWarnings("unchecked")
@Override
public List getLeadersBySessionId(Long sessionId) {
- return this.doFind(FIND_LEADERS_BY_SESSION_ID, sessionId);
+ return (List) this.doFind(FIND_LEADERS_BY_SESSION_ID, sessionId);
}
}
Index: lams_tool_scratchie/conf/language/lams/ApplicationResources.properties
===================================================================
diff -u -rcf2997c9ea81fff656bbfa0df90ac9100ba1ebbf -rb616b4a2df3217f70583fa5f62a59a1488b33f84
--- lams_tool_scratchie/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision cf2997c9ea81fff656bbfa0df90ac9100ba1ebbf)
+++ lams_tool_scratchie/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision b616b4a2df3217f70583fa5f62a59a1488b33f84)
@@ -267,5 +267,7 @@
label.type.your.group.answer =Type your group answer
label.button.submit =Submit
label.options.show = Show question options
+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 -r7c8332d32bfb95927b393aa310c9cf214c6bc49b -rb616b4a2df3217f70583fa5f62a59a1488b33f84
--- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java (.../ScratchieConstants.java) (revision 7c8332d32bfb95927b393aa310c9cf214c6bc49b)
+++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java (.../ScratchieConstants.java) (revision b616b4a2df3217f70583fa5f62a59a1488b33f84)
@@ -89,6 +89,8 @@
public static final String ATTR_GROUP_USERS = "groupUsers";
+ public static final String ATTR_ALL_GROUP_USERS = "allGroupUsers";
+
public static final String ATTR_ANSWER_LIST = "answerList";
public static final String ATTR_ANSWER_COUNT = "answerCount";
@@ -109,6 +111,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";
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 b616b4a2df3217f70583fa5f62a59a1488b33f84)
@@ -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 -r9ad3683dd034fb1f5e76f9c1094893c97c159eea -rb616b4a2df3217f70583fa5f62a59a1488b33f84
--- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/Scratchie.java (.../Scratchie.java) (revision 9ad3683dd034fb1f5e76f9c1094893c97c159eea)
+++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/Scratchie.java (.../Scratchie.java) (revision b616b4a2df3217f70583fa5f62a59a1488b33f84)
@@ -94,6 +94,9 @@
@Column(name = "burning_questions_enabled")
private boolean burningQuestionsEnabled;
+ @Column(name = "question_etherpad_enabled")
+ private boolean questionEtherpadEnabled;
+
@Column(name = "shuffle_items")
private boolean shuffleItems;
@@ -334,6 +337,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 -r2188b7417d676ef1c628a44152af4980df6097e3 -rb616b4a2df3217f70583fa5f62a59a1488b33f84
--- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java (.../IScratchieService.java) (revision 2188b7417d676ef1c628a44152af4980df6097e3)
+++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java (.../IScratchieService.java) (revision b616b4a2df3217f70583fa5f62a59a1488b33f84)
@@ -44,6 +44,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;
@@ -282,9 +283,8 @@
ScratchieItem getScratchieItemByUid(Long itemUid);
- /**
- * @param contentId
- */
+ Collection getAllGroupUsers(Long toolSessionId);
+
List getMonitoringSummary(Long contentId);
List getQuestionSummary(Long contentId, Long itemUid);
Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java
===================================================================
diff -u -re6cb70fdabcaeb4c35ef551f7d694167f46ca5bc -rb616b4a2df3217f70583fa5f62a59a1488b33f84
--- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision e6cb70fdabcaeb4c35ef551f7d694167f46ca5bc)
+++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision b616b4a2df3217f70583fa5f62a59a1488b33f84)
@@ -677,6 +677,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
@@ -690,7 +694,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 -r2ef2360b201af371fa415d8a4c3953fec1d38c57 -rb616b4a2df3217f70583fa5f62a59a1488b33f84
--- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/controller/LearningController.java (.../LearningController.java) (revision 2ef2360b201af371fa415d8a4c3953fec1d38c57)
+++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/controller/LearningController.java (.../LearningController.java) (revision b616b4a2df3217f70583fa5f62a59a1488b33f84)
@@ -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;
@@ -61,6 +63,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;
@@ -286,6 +290,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
--- lams_tool_scratchie/web/WEB-INF/tags/Etherpad.tag (revision 0)
+++ lams_tool_scratchie/web/WEB-INF/tags/Etherpad.tag (revision b616b4a2df3217f70583fa5f62a59a1488b33f84)
@@ -0,0 +1,81 @@
+<%
+ /**
+ * Etherpad.tag
+ * Author: Marcin Cieslak
+ * Description: Etherpad pad
+ */
+ %>
+<%@ tag body-content="scriptless" %>
+<%@ taglib uri="tags-core" prefix="c" %>
+<%@ taglib uri="tags-lams" prefix="lams"%>
+<%@ taglib uri="tags-function" prefix="fn" %>
+<%@ 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"%>
+
+<%=Configuration.get(ConfigurationKeys.ETHERPAD_SERVER_URL)%>
+
+
+
+<%-- ---------------------------------------%>
+
+
+
+
+
+
+
+
+<%-- 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 -r2ef2360b201af371fa415d8a4c3953fec1d38c57 -rb616b4a2df3217f70583fa5f62a59a1488b33f84
--- lams_tool_scratchie/web/includes/css/scratchie-learning.scss (.../scratchie-learning.scss) (revision 2ef2360b201af371fa415d8a4c3953fec1d38c57)
+++ lams_tool_scratchie/web/includes/css/scratchie-learning.scss (.../scratchie-learning.scss) (revision b616b4a2df3217f70583fa5f62a59a1488b33f84)
@@ -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 -r62aaf160878735888d077bf28fac3c1989bb8fbd -rb616b4a2df3217f70583fa5f62a59a1488b33f84
--- lams_tool_scratchie/web/pages/authoring/advance.jsp (.../advance.jsp) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd)
+++ lams_tool_scratchie/web/pages/authoring/advance.jsp (.../advance.jsp) (revision b616b4a2df3217f70583fa5f62a59a1488b33f84)
@@ -45,6 +45,20 @@
+
+
+
+
+
+
+
+