Index: lams_admin/web/WEB-INF/tlds/lams/lams.tld
===================================================================
diff -u -r839af8b148458fd7202f178fb52274dca01fc090 -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_admin/web/WEB-INF/tlds/lams/lams.tld (.../lams.tld) (revision 839af8b148458fd7202f178fb52274dca01fc090)
+++ lams_admin/web/WEB-INF/tlds/lams/lams.tld (.../lams.tld) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -404,7 +404,7 @@
Portrait
org.lamsfoundation.lams.web.tag.PortraitTag
- empty
+ JSP
userId
true
@@ -421,6 +421,12 @@
true
If true shows the portrait as a round dot. Defaults to true.
+
+ hover
+ false
+ true
+ If true then display as a hover box. Uses the body of the tag as the link text.
+
Index: lams_build/lib/lams/lams.jar
===================================================================
diff -u -r953f62a7fc515e2dc5c4ad983df233070cf7a82c -r60d9a173d5590295376322fc3e857ae2dca37717
Binary files differ
Index: lams_central/src/java/org/lamsfoundation/lams/web/tag/PortraitTag.java
===================================================================
diff -u -r16a3de6463b235e8b8f91ebada6aac7db8172436 -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_central/src/java/org/lamsfoundation/lams/web/tag/PortraitTag.java (.../PortraitTag.java) (revision 16a3de6463b235e8b8f91ebada6aac7db8172436)
+++ lams_central/src/java/org/lamsfoundation/lams/web/tag/PortraitTag.java (.../PortraitTag.java) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -26,8 +26,8 @@
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
+import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.tagext.Tag;
-import javax.servlet.jsp.tagext.TagSupport;
import org.apache.log4j.Logger;
import org.lamsfoundation.lams.usermanagement.User;
@@ -40,7 +40,7 @@
/**
* Output a URL to display a user's portrait. If you modify the logic here, change portrait.js too!
*/
-public class PortraitTag extends TagSupport {
+public class PortraitTag extends BodyTagSupport {
private static final long serialVersionUID = -3143529984657965761L;
private static final Logger log = Logger.getLogger(PortraitTag.class);
private static final int NUM_COLORS = 7;
@@ -66,6 +66,7 @@
private String userId = null;
private String size = null;
private String round = null;
+ private String hover = null;
public PortraitTag() {
super();
@@ -74,47 +75,37 @@
@Override
public int doStartTag() throws JspException {
+ return super.doStartTag();
+ }
+
+ @Override
+ public int doEndTag() throws JspException {
+
String serverURL = Configuration.get(ConfigurationKeys.SERVER_URL);
serverURL = serverURL == null ? null : serverURL.trim();
try {
- String code = null;
- boolean isRound = (getRound() != null ? Boolean.getBoolean(getRound()) : true);
if (userId != null && userId.length() > 0) {
+ String code = null;
HashMap cache = getPortraitCache();
code = cache.get(userId);
+
if (code == null) {
- Integer userIdLong = Integer.decode(userId);
- User user = (User) getUserManagementService().findById(User.class, userIdLong);
- Long portraitId = user != null ? user.getPortraitUuid() : null;
- if (portraitId != null) {
- String[] sizes = getSizeClass();
- StringBuilder bldr = new StringBuilder("
");
- code = bldr.toString();
+ Integer userIdInt = Integer.decode(userId);
+ User user = (User) getUserManagementService().findById(User.class, userIdInt);
+ boolean isHover = (hover != null ? Boolean.valueOf(hover) : false);
+ if ( isHover ) {
+ code = buildHoverUrl(user);
} else {
- code = new StringBuilder("")
- .toString();
+ code = buildDivUrl(user);
}
cache.put(userId, code);
}
- } else {
- code = "";
+
+ JspWriter writer = pageContext.getOut();
+ writer.println(code);
}
- JspWriter writer = pageContext.getOut();
- writer.println(code);
-
} catch (NumberFormatException nfe) {
PortraitTag.log.error("PortraitId unable to write out portrait details as userId is invalid. " + userId,
nfe);
@@ -128,6 +119,45 @@
return Tag.SKIP_BODY;
}
+ private String buildDivUrl(User user) {
+ Long portraitId = user != null ? user.getPortraitUuid() : null;
+ if (portraitId != null) {
+ boolean isRound = (round != null ? Boolean.valueOf(round) : true);
+ String[] sizes = getSizeClass();
+ StringBuilder bldr = new StringBuilder("
");
+ return bldr.toString();
+ } else {
+ return new StringBuilder("").toString();
+ }
+ }
+
+ private String buildHoverUrl(User user) {
+ Long portraitId = user != null ? user.getPortraitUuid() : null;
+ String linkText = getBodyContent() != null ? getBodyContent().getString() : null;
+ if (portraitId != null) {
+ String fullName = user.getFullName();
+ if ( linkText == null || linkText.length() == 0)
+ linkText = fullName;
+ return new StringBuilder(
+ "")
+ .append(linkText).append("").toString();
+ } else {
+ return linkText != null ? linkText : "";
+ }
+ }
+
private IUserManagementService getUserManagementService() {
if (userManagementService == null) {
WebApplicationContext ctx = WebApplicationContextUtils
@@ -137,7 +167,6 @@
return userManagementService;
}
- @SuppressWarnings("unchecked")
private HashMap getPortraitCache() {
HashMap cache = (HashMap) pageContext.getAttribute("portraitCache");
if (cache == null) {
@@ -195,4 +224,12 @@
public void setRound(String round) {
this.round = round;
}
+
+ public String getHover() {
+ return hover;
+ }
+
+ public void setHover(String hover) {
+ this.hover = hover;
+ }
}
\ No newline at end of file
Index: lams_central/web/WEB-INF/tlds/lams/lams.tld
===================================================================
diff -u -r839af8b148458fd7202f178fb52274dca01fc090 -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_central/web/WEB-INF/tlds/lams/lams.tld (.../lams.tld) (revision 839af8b148458fd7202f178fb52274dca01fc090)
+++ lams_central/web/WEB-INF/tlds/lams/lams.tld (.../lams.tld) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -404,7 +404,7 @@
Portrait
org.lamsfoundation.lams.web.tag.PortraitTag
- empty
+ JSP
userId
true
@@ -421,6 +421,12 @@
true
If true shows the portrait as a round dot. Defaults to true.
+
+ hover
+ false
+ true
+ If true then display as a hover box. Uses the body of the tag as the link text.
+
Index: lams_central/web/css/_learner_base.scss
===================================================================
diff -u -r803ad5cf3ae124a5dc6615238a401847094679af -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_central/web/css/_learner_base.scss (.../_learner_base.scss) (revision 803ad5cf3ae124a5dc6615238a401847094679af)
+++ lams_central/web/css/_learner_base.scss (.../_learner_base.scss) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -71,7 +71,6 @@
color: $a-link-default;
}
-
a:hover {
color: $a-link-default-hover;
}
@@ -80,6 +79,20 @@
color: $a-link-default-focus;
}
+// popover links forced to be the usual link color or jqgrid interferes
+.popover-link {
+ color: $a-link-default !important;
+}
+
+.popover-link:hover {
+ color: $a-link-default-hover !important;
+}
+
+.popover-link:focus {
+ color: $a-link-default-focus !important;
+}
+
+
@if variable-exists(panel-default-heading-background) {
.panel-default>.panel-heading {
background-color: $panel-default-heading-background;
Index: lams_central/web/includes/javascript/portrait.js
===================================================================
diff -u -r16a3de6463b235e8b8f91ebada6aac7db8172436 -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_central/web/includes/javascript/portrait.js (.../portrait.js) (revision 16a3de6463b235e8b8f91ebada6aac7db8172436)
+++ lams_central/web/includes/javascript/portrait.js (.../portrait.js) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -20,21 +20,64 @@
STYLE_LARGE = 'large',
STYLE_XLARGE = 'xlarge';
+// Add a portrait to an existing div as specified by selector
function addPortrait( selector, portraitId, userId, size, round, LAMS_URL ) {
var isRound = round == null ? true : round;
if ( portraitId && portraitId > 0) {
- selector.css('background-image', 'url(' + LAMS_URL + 'download?preferDownload=false&uuid=' + portraitId + getSizeVersion(size) + ')');
- selector.addClass(getSizeCSS(size));
+ selector.css('background-image', 'url(' + LAMS_URL + 'download?preferDownload=false&uuid=' + portraitId + _getSizeVersion(size) + ')');
+ selector.addClass(_getSizeCSS(size));
if ( isRound ) {
selector.addClass(CSS_ROUND);
}
} else {
- selector.addClass(getGenericSizeClass( size ));
- selector.addClass(PORTRAIT_VERSION_SUFFIX + userId % NUM_COLORS );
+ selector.addClass(_getGenericSizeClass( size ));
+ selector.addClass(getPortraitColourClass(userId));
}
}
-function getSizeCSS(size) {
+// Get the colour that would be used for the generic portrait. Useful when you need a consistent colour for a user.
+function getPortraitColourClass(userId) {
+ return PORTRAIT_VERSION_SUFFIX + userId % NUM_COLORS;
+}
+
+// Create a popover/tooltip to display the learner's portrait. Put it in bind('pagerInitialized pagerComplete', function(event, options){})
+// (tablesorter) or within loadComplete (jqgrid). Elements to be processed should have class new-popover and dataset values for 'portrait'
+// and 'fullname'. Use with definePortraitPopover. Size is optional.
+function initializePortraitPopover(LAMS_URL, size) {
+ if ( ! size )
+ size = STYLE_LARGE;
+
+ $('.new-popover').each(function( index, element ) {
+ var idString = element.dataset.id;
+ var url = LAMS_URL + '/download?preferDownload=false&uuid='+element.dataset.portrait+_getSizeVersion(size);
+ $(element).popover({
+ content: '
',
+ html: true,
+ trigger: 'hover focus',
+ title: element.dataset.fullname,
+ container: 'body' // ensures popovers are not clipped within jqgrid tables
+ });
+ element.classList.remove('new-popover');
+ });
+ }
+
+
+// Define the element to have a popover/tooltip to display the learner's portrait. Call in the ajaxProcessing (tablesorter) or
+// in a formatter function (jqgrid). Use with initializePortraitPopover. Displays the fullName and portrait in the popover when the
+// user hovers on linkText. Usually linkText === fullName
+function definePortraitPopover(portraitId, userId, fullName, linkText) {
+ if ( ! linkText )
+ linkText = fullName;
+
+ if ( portraitId ) {
+ return ''+linkText+'';
+ } else {
+ return linkText;
+ }
+}
+
+function _getSizeCSS(size) {
if ( size ) {
if (size == STYLE_MEDIUM)
return CSS_MEDIUM;
@@ -46,7 +89,7 @@
return CSS_SMALL;
}
-function getSizeVersion(size) {
+function _getSizeVersion(size) {
if ( size ) {
if (size == STYLE_MEDIUM)
return VERSION_MEDIUM;
@@ -58,7 +101,7 @@
return VERSION_SMALL;
}
-function getGenericSizeClass(size) {
+function _getGenericSizeClass(size) {
if ( size ) {
if (size == STYLE_MEDIUM)
return CSS_GENERIC_MEDIUM;
Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java
===================================================================
diff -u -r5bf2d3b201efb46864182d72901e497d0acb253f -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 5bf2d3b201efb46864182d72901e497d0acb253f)
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -518,4 +518,10 @@
* Stores organisation (course) groups and removes the unnecessary ones.
*/
void saveOrganisationGrouping(OrganisationGrouping grouping, Collection newGroups);
+
+ /**
+ * Returns the SQL needed to look up portrait details for a given user. This is an efficient way to get the entries
+ * at the same time as retrieving the tool data, rather than making a separate lookup.
+ */
+ String[] getPortraitSQL(String userIdString);
}
\ No newline at end of file
Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java
===================================================================
diff -u -r5bf2d3b201efb46864182d72901e497d0acb253f -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 5bf2d3b201efb46864182d72901e497d0acb253f)
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -39,8 +39,10 @@
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
+import org.hibernate.type.IntegerType;
import org.lamsfoundation.lams.dao.IBaseDAO;
import org.lamsfoundation.lams.learningdesign.dao.IGroupDAO;
+import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants;
import org.lamsfoundation.lams.themes.Theme;
import org.lamsfoundation.lams.usermanagement.FavoriteOrganisation;
import org.lamsfoundation.lams.usermanagement.ForgotPasswordRequest;
@@ -1006,7 +1008,31 @@
List results = baseDAO.findByProperty(User.class, "openidURL", openidURL);
return results.isEmpty() ? null : (User) results.get(0);
}
+
+ /**
+ * Returns the SQL needed to look up portrait details for a given user. This is an efficient way to get the entries
+ * at the same time as retrieving the tool data, rather than making a separate lookup.
+ *
+ * The return values are the entry for the select clause (will always have a leading space but no trailing comma and an
+ * alias of luser) and the sql join clause, which should go with any other join clauses.
+ *
+ * To convert the portrait id set up the sql -> java object translation using
+ * addScalar("portraitId", IntegerType.INSTANCE)
+ *
+ * @param userIdString
+ * User identifier field string e.g. user.user_id
+ * @return String[] { partial select string, join clause }
+ *
+ */
+ @Override
+ public String[] getPortraitSQL(String userIdString) {
+ String[] retValue = new String[2];
+ retValue[0] = ", luser.portrait_uuid portraitId ";
+ retValue[1] = " JOIN lams_user luser ON luser.user_id = " + userIdString;
+ return retValue;
+ }
+
// ---------------------------------------------------------------------
// Inversion of Control Methods - Method injection
// ---------------------------------------------------------------------
Index: lams_gradebook/web/WEB-INF/tlds/lams/lams.tld
===================================================================
diff -u -r839af8b148458fd7202f178fb52274dca01fc090 -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_gradebook/web/WEB-INF/tlds/lams/lams.tld (.../lams.tld) (revision 839af8b148458fd7202f178fb52274dca01fc090)
+++ lams_gradebook/web/WEB-INF/tlds/lams/lams.tld (.../lams.tld) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -404,7 +404,7 @@
Portrait
org.lamsfoundation.lams.web.tag.PortraitTag
- empty
+ JSP
userId
true
@@ -421,6 +421,12 @@
true
If true shows the portrait as a round dot. Defaults to true.
+
+ hover
+ false
+ true
+ If true then display as a hover box. Uses the body of the tag as the link text.
+
Index: lams_learning/web/WEB-INF/tlds/lams/lams.tld
===================================================================
diff -u -r839af8b148458fd7202f178fb52274dca01fc090 -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_learning/web/WEB-INF/tlds/lams/lams.tld (.../lams.tld) (revision 839af8b148458fd7202f178fb52274dca01fc090)
+++ lams_learning/web/WEB-INF/tlds/lams/lams.tld (.../lams.tld) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -404,7 +404,7 @@
Portrait
org.lamsfoundation.lams.web.tag.PortraitTag
- empty
+ JSP
userId
true
@@ -421,6 +421,12 @@
true
If true shows the portrait as a round dot. Defaults to true.
+
+ hover
+ false
+ true
+ If true then display as a hover box. Uses the body of the tag as the link text.
+
Index: lams_monitoring/web/WEB-INF/tlds/lams/lams.tld
===================================================================
diff -u -r839af8b148458fd7202f178fb52274dca01fc090 -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_monitoring/web/WEB-INF/tlds/lams/lams.tld (.../lams.tld) (revision 839af8b148458fd7202f178fb52274dca01fc090)
+++ lams_monitoring/web/WEB-INF/tlds/lams/lams.tld (.../lams.tld) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -404,7 +404,7 @@
Portrait
org.lamsfoundation.lams.web.tag.PortraitTag
- empty
+ JSP
userId
true
@@ -421,6 +421,12 @@
true
If true shows the portrait as a round dot. Defaults to true.
+
+ hover
+ false
+ true
+ If true then display as a hover box. Uses the body of the tag as the link text.
+
Index: lams_tool_assessment/conf/language/lams/ApplicationResources.properties
===================================================================
diff -u -r90136820195d7768c6dbd79b3716d595476ecb31 -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_tool_assessment/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 90136820195d7768c6dbd79b3716d595476ecb31)
+++ lams_tool_assessment/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -314,5 +314,9 @@
label.number.groups.in.mark.range =Number of groups in mark range
label.average.mark =Average mark
+label.error =Error
+error.loaderror =There was an error loading the grid. If this problem persists, please contact your system administrator.
+label.ok =OK
+
#======= End labels: Exported 307 labels for en AU =====
Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentUserDAO.java
===================================================================
diff -u -r7cacaf3ab86dd7b0e794e7b4c710fb73ecb61344 -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentUserDAO.java (.../AssessmentUserDAO.java) (revision 7cacaf3ab86dd7b0e794e7b4c710fb73ecb61344)
+++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentUserDAO.java (.../AssessmentUserDAO.java) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -27,6 +27,7 @@
import org.lamsfoundation.lams.tool.assessment.dto.AssessmentUserDTO;
import org.lamsfoundation.lams.tool.assessment.model.AssessmentUser;
+import org.lamsfoundation.lams.usermanagement.service.IUserManagementService;
public interface AssessmentUserDAO extends DAO {
@@ -37,7 +38,7 @@
List getBySessionID(Long sessionId);
List getPagedUsersBySession(Long sessionId, int page, int size, String sortBy, String sortOrder,
- String searchString);
+ String searchString, IUserManagementService userManagementService);
int getCountUsersBySession(Long sessionId, String searchString);
Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentUserDAOHibernate.java
===================================================================
diff -u -r7cacaf3ab86dd7b0e794e7b4c710fb73ecb61344 -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentUserDAOHibernate.java (.../AssessmentUserDAOHibernate.java) (revision 7cacaf3ab86dd7b0e794e7b4c710fb73ecb61344)
+++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentUserDAOHibernate.java (.../AssessmentUserDAOHibernate.java) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -34,6 +34,7 @@
import org.lamsfoundation.lams.tool.assessment.dao.AssessmentUserDAO;
import org.lamsfoundation.lams.tool.assessment.dto.AssessmentUserDTO;
import org.lamsfoundation.lams.tool.assessment.model.AssessmentUser;
+import org.lamsfoundation.lams.usermanagement.service.IUserManagementService;
import org.springframework.stereotype.Repository;
@Repository
@@ -89,8 +90,9 @@
return (List) this.doFind(FIND_BY_SESSION_ID, sessionId);
}
- private static String LOAD_USERS_ORDERED_BY_SESSION = "SELECT DISTINCT user.user_id, user.last_name, user.first_name, user.login_name, result.grade"
- + " FROM tl_laasse10_user user INNER JOIN tl_laasse10_session session"
+ private static String LOAD_USERS_ORDERED_BY_SESSION_SELECT = "SELECT DISTINCT user.user_id, user.last_name, user.first_name, user.login_name, result.grade ";
+ private static String LOAD_USERS_ORDERED_BY_SESSION_FROM = " FROM tl_laasse10_user user ";
+ private static String LOAD_USERS_ORDERED_BY_SESSION_JOIN = " INNER JOIN tl_laasse10_session session"
+ " ON user.session_uid=session.uid LEFT OUTER JOIN tl_laasse10_assessment_result result "
+ " ON result.user_uid = user.uid AND result.finish_date IS NOT NULL"
+ " AND result.latest = 1 WHERE session.session_id = :sessionId "
@@ -101,9 +103,15 @@
@SuppressWarnings("unchecked")
@Override
public List getPagedUsersBySession(Long sessionId, int page, int size, String sortBy,
- String sortOrder, String searchString) {
+ String sortOrder, String searchString, IUserManagementService userManagementService) {
- StringBuilder bldr = new StringBuilder(LOAD_USERS_ORDERED_BY_SESSION);
+ String[] portraitStrings = userManagementService.getPortraitSQL("user.user_id");
+
+ StringBuilder bldr = new StringBuilder(LOAD_USERS_ORDERED_BY_SESSION_SELECT)
+ .append(portraitStrings[0])
+ .append(LOAD_USERS_ORDERED_BY_SESSION_FROM)
+ .append(portraitStrings[1])
+ .append(LOAD_USERS_ORDERED_BY_SESSION_JOIN);
if ( "total".equalsIgnoreCase(sortBy) )
bldr.append(LOAD_USERS_ORDERED_ORDER_BY_TOTAL);
else
@@ -128,13 +136,15 @@
String lastName = (String) element[2];
String login = (String) element[3];
float grade = element[4] == null ? 0 : ((Number) element[4]).floatValue();
+ Long portraitId = element[5] == null ? null : ((Number) element[5]).longValue();
AssessmentUserDTO userDto = new AssessmentUserDTO();
userDto.setUserId(userId);
userDto.setFirstName(firstName);
userDto.setLastName(lastName);
userDto.setLogin(login);
userDto.setGrade(grade);
+ userDto.setPortraitId(portraitId);
userDtos.add(userDto);
}
Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/AssessmentUserDTO.java
===================================================================
diff -u -re8b8331273b3d6dd4456138dbd45f9dba3b63148 -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/AssessmentUserDTO.java (.../AssessmentUserDTO.java) (revision e8b8331273b3d6dd4456138dbd45f9dba3b63148)
+++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/AssessmentUserDTO.java (.../AssessmentUserDTO.java) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -31,6 +31,7 @@
private float grade;
private Long questionResultUid;
+ private Long portraitId;
public String getFirstName() {
return firstName;
@@ -80,4 +81,12 @@
this.questionResultUid = questionResultUid;
}
+ public Long getPortraitId() {
+ return portraitId;
+ }
+
+ public void setPortraitId(Long portraitId) {
+ this.portraitId = portraitId;
+ }
+
}
Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/ReflectDTO.java
===================================================================
diff -u -r3399163940c61c9132223c758d274486e57ff9b7 -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/ReflectDTO.java (.../ReflectDTO.java) (revision 3399163940c61c9132223c758d274486e57ff9b7)
+++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/ReflectDTO.java (.../ReflectDTO.java) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -29,6 +29,7 @@
public class ReflectDTO {
private Long userUid;
+ private Long userId;
private String fullName;
private String loginName;
private String reflect;
@@ -38,6 +39,7 @@
this.setLoginName(user.getLoginName());
this.setFullName(user.getFirstName() + " " + user.getLastName());
this.setUserUid(user.getUid());
+ this.setUserId(user.getUserId());
}
public String getFullName() {
@@ -79,4 +81,12 @@
public void setDate(Date date) {
this.date = date;
}
+
+ public Long getUserId() {
+ return userId;
+ }
+
+ public void setUserId(Long userId) {
+ this.userId = userId;
+ }
}
Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java
===================================================================
diff -u -re34e0b7a8ed604692164d998b9a7d6944adfc487 -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision e34e0b7a8ed604692164d998b9a7d6944adfc487)
+++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -331,7 +331,8 @@
@Override
public List getPagedUsersBySession(Long sessionId, int page, int size, String sortBy,
String sortOrder, String searchString) {
- return assessmentUserDao.getPagedUsersBySession(sessionId, page, size, sortBy, sortOrder, searchString);
+ return assessmentUserDao.getPagedUsersBySession(sessionId, page, size, sortBy, sortOrder,
+ searchString, userManagementService);
}
@Override
@@ -347,6 +348,15 @@
}
@Override
+ public Long getPortraitId(Long userId) {
+ if ( userId != null ) {
+ User user = (User) userManagementService.findById(User.class, userId.intValue());
+ return user != null ? user.getPortraitUuid() : null;
+ }
+ return null;
+ }
+
+ @Override
public Assessment getAssessmentByContentId(Long contentId) {
Assessment rs = assessmentDao.getByContentId(contentId);
return rs;
Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java
===================================================================
diff -u -r06bf1c491a054104ea4e5cc55fc867af5519c200 -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision 06bf1c491a054104ea4e5cc55fc867af5519c200)
+++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -46,6 +46,7 @@
import org.lamsfoundation.lams.tool.assessment.model.AssessmentSession;
import org.lamsfoundation.lams.tool.assessment.model.AssessmentUser;
import org.lamsfoundation.lams.tool.assessment.model.QuestionReference;
+import org.lamsfoundation.lams.usermanagement.service.IUserManagementService;
import org.lamsfoundation.lams.util.ExcelCell;
/**
@@ -496,4 +497,6 @@
List deletedReferences);
void releaseFromCache(Object object);
+
+ Long getPortraitId(Long userId);
}
Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java
===================================================================
diff -u -r06bf1c491a054104ea4e5cc55fc867af5519c200 -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision 06bf1c491a054104ea4e5cc55fc867af5519c200)
+++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -365,12 +365,14 @@
if (groupLeader != null) {
float assessmentResult = service.getLastTotalScoreByUser(assessment.getUid(), groupLeader.getUserId());
+ Long portraitId = service.getPortraitId(groupLeader.getUserId());
AssessmentUserDTO userDto = new AssessmentUserDTO();
userDto.setUserId(groupLeader.getUserId());
userDto.setFirstName(groupLeader.getFirstName());
userDto.setLastName(groupLeader.getLastName());
userDto.setGrade(assessmentResult);
+ userDto.setPortraitId(portraitId);
userDtos.add(userDto);
countSessionUsers = 1;
}
@@ -395,6 +397,8 @@
String fullName = StringEscapeUtils.escapeHtml(userDto.getFirstName() + " " + userDto.getLastName());
userData.put(fullName);
userData.put(userDto.getGrade());
+ if (userDto.getPortraitId() != null )
+ userData.put(userDto.getPortraitId());
JSONObject userRow = new JSONObject();
userRow.put("id", i++);
Index: lams_tool_assessment/web/WEB-INF/tlds/lams/lams.tld
===================================================================
diff -u -r839af8b148458fd7202f178fb52274dca01fc090 -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_tool_assessment/web/WEB-INF/tlds/lams/lams.tld (.../lams.tld) (revision 839af8b148458fd7202f178fb52274dca01fc090)
+++ lams_tool_assessment/web/WEB-INF/tlds/lams/lams.tld (.../lams.tld) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -404,7 +404,7 @@
Portrait
org.lamsfoundation.lams.web.tag.PortraitTag
- empty
+ JSP
userId
true
@@ -421,6 +421,12 @@
true
If true shows the portrait as a round dot. Defaults to true.
+
+ hover
+ false
+ true
+ If true then display as a hover box. Uses the body of the tag as the link text.
+
Index: lams_tool_assessment/web/pages/monitoring/monitoring.jsp
===================================================================
diff -u -r4583983b64efe1d91fbb47cdde6a759a6a30e859 -r60d9a173d5590295376322fc3e857ae2dca37717
--- lams_tool_assessment/web/pages/monitoring/monitoring.jsp (.../monitoring.jsp) (revision 4583983b64efe1d91fbb47cdde6a759a6a30e859)
+++ lams_tool_assessment/web/pages/monitoring/monitoring.jsp (.../monitoring.jsp) (revision 60d9a173d5590295376322fc3e857ae2dca37717)
@@ -10,8 +10,10 @@
-
-
+
+
+
+