diff --git a/src/main/java/org/olat/admin/sysinfo/UserSessionController.java b/src/main/java/org/olat/admin/sysinfo/UserSessionController.java index 5bde6d3d0234395ecd814e63ee4fe6faf918bab2..c91245bbd9449573082c23533ba8c8c5baa0b4ed 100644 --- a/src/main/java/org/olat/admin/sysinfo/UserSessionController.java +++ b/src/main/java/org/olat/admin/sysinfo/UserSessionController.java @@ -85,14 +85,15 @@ public class UserSessionController extends BasicController implements StackedCon TableGuiConfiguration tableConfig = new TableGuiConfiguration(); tableCtr = new TableController(tableConfig, ureq, getWindowControl(), getTranslator()); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.last", 0, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.first", 1, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.identity", 2, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.authprovider", 3, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.fqdn", 4, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.access", 5, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.duration", 6, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.mode", 7, null, ureq.getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.last", 0, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.first", 1, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.identity", 2, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.authprovider", 3, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.fqdn", 4, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.lastClick", 5, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.access", 9, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.duration", 6, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.mode", 7, null, getLocale())); tableCtr.addColumnDescriptor(new StaticColumnDescriptor("sess.details", "sess.details", translate("sess.details"))); tableCtr.addColumnDescriptor(new BooleanColumnDescriptor("sess.chat", 8, "sess.chat", translate("sess.chat"), null)); diff --git a/src/main/java/org/olat/admin/sysinfo/UserSessionDetailsController.java b/src/main/java/org/olat/admin/sysinfo/UserSessionDetailsController.java index 6e8bfb459f4b52b12e76ef432d95f199f7dd3959..ad12dc3d80313c140dbc448d08c54f40ab316219 100644 --- a/src/main/java/org/olat/admin/sysinfo/UserSessionDetailsController.java +++ b/src/main/java/org/olat/admin/sysinfo/UserSessionDetailsController.java @@ -73,6 +73,7 @@ public class UserSessionDetailsController extends BasicController { long creatTime = -1; long lastAccessTime = -1; + long lastClickTime = -1; boolean success = false; if (isAuth) { @@ -80,16 +81,18 @@ public class UserSessionDetailsController extends BasicController { HttpSession se = sessInfo.getSession(); creatTime = se.getCreationTime(); lastAccessTime = se.getLastAccessedTime(); + lastClickTime = sessInfo.getLastClickTime(); success = true; } catch (Exception ise) { // nothing to do } } - + if (success) { Formatter f = Formatter.getInstance(ureq.getLocale()); sesDetails.contextPut("created", f.formatDateAndTime(new Date(creatTime))); sesDetails.contextPut("lastaccess", f.formatDateAndTime(new Date(lastAccessTime))); + sesDetails.contextPut("lastclick", f.formatDateAndTime(new Date(lastClickTime))); } else { sesDetails.contextPut("created", " -- this session has been invalidated --"); sesDetails.contextPut("lastaccess", " -- this session has been invalidated --"); diff --git a/src/main/java/org/olat/admin/sysinfo/UserSessionTableModel.java b/src/main/java/org/olat/admin/sysinfo/UserSessionTableModel.java index d73de10026a33893af2d43166c53a6eb4d121b64..38db666984db443a453961d12b78b10af423fbad 100644 --- a/src/main/java/org/olat/admin/sysinfo/UserSessionTableModel.java +++ b/src/main/java/org/olat/admin/sysinfo/UserSessionTableModel.java @@ -70,11 +70,8 @@ public class UserSessionTableModel extends DefaultTableDataModel<UserSessionView case 5: return usess.getLastClickTime(); case 6: return usess.getSessionDuration(); case 7: return usess.getMode(); - case 8: { - //can chat? - return myIdentityKey.equals(usess.getIdentityKey()) - ? Boolean.FALSE : Boolean.TRUE; - } + case 8: return myIdentityKey.equals(usess.getIdentityKey()) ? Boolean.FALSE : Boolean.TRUE; + case 9: return usess.getLastAccessTime(); default: return "Error"; } } else { // not signed on diff --git a/src/main/java/org/olat/admin/sysinfo/_content/sessionDetails.html b/src/main/java/org/olat/admin/sysinfo/_content/sessionDetails.html index 923628c0d0152038282581cbfc288355f4c7090f..125b3a148a23c38c7f3005517b27ec5ea2966161 100644 --- a/src/main/java/org/olat/admin/sysinfo/_content/sessionDetails.html +++ b/src/main/java/org/olat/admin/sysinfo/_content/sessionDetails.html @@ -13,6 +13,7 @@ <tr><td>$r.translate("sess.fqdn"):</td><td>$!si.getFromFQN()</td></tr> <tr><td>User Agent:</td><td>$!si.getUserAgent()</td></tr> <tr><td>$r.translate("sess.created"):</td><td>$created</td></tr> + <tr><td>$r.translate("sess.lastClick"):</td><td>$lastclick</td></tr> <tr><td>$r.translate("sess.access"):</td><td>$lastaccess</td></tr> <tr><td>$r.translate("sess.webMode"):</td><td>$!si.getWebMode()</td></tr> <tr><td>WebDAV:</td><td>$!si.isWebDAV()</td></tr> diff --git a/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_de.properties index 664a5925ef3d0dcaf94845c6e0fb9f3dda404988..82bf233aa960ab28d5409d39b61cfbff57ce488a 100644 --- a/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_de.properties @@ -98,7 +98,8 @@ runtime.users.last6months=Aktive Benutzer innerhalb der letzten 6 Monate runtime.users.lastday=Aktive Benutzer innerhalb der letzten 24 Stunden runtime.users.lastmonth=Aktive Benutzer innerhalb des letzten Monates runtime.users.lastweek=Aktive Benutzer innerhalb innerhalb der letzten 7 Tage -sess.access=Letzter Zugriff +sess.lastClick=Letzter Click +sess.access=Letzer Zugriff sess.active=Aktive Nutzer sess.and.clicks=$\:sess.active sess.attributes.title=Attribute diff --git a/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_en.properties index 455be5c06035be5d2a21372f7c8d933e44789665..45bf0e2c06878b5908aec3b7e7e65a66fb736fa6 100644 --- a/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_en.properties @@ -99,6 +99,7 @@ runtime.users.lastday=Active users within last 24 hours runtime.users.lastmonth=Active users within last month runtime.users.lastweek=Active users within last 7 days sess.access=Last access +sess.lastClick=Last click sess.active=Active users sess.and.clicks=$\:sess.active sess.attributes.title=Attributes diff --git a/src/main/java/org/olat/admin/sysinfo/model/UserSessionView.java b/src/main/java/org/olat/admin/sysinfo/model/UserSessionView.java index 6adb7bb8c1018cb166af62cd8fe5a72a69f807b3..16897d47ecfa9832fa5a41b7d8061a29aa999548 100644 --- a/src/main/java/org/olat/admin/sysinfo/model/UserSessionView.java +++ b/src/main/java/org/olat/admin/sysinfo/model/UserSessionView.java @@ -21,6 +21,8 @@ package org.olat.admin.sysinfo.model; import java.util.Date; +import javax.servlet.http.HttpSession; + import org.olat.core.util.SessionInfo; import org.olat.core.util.UserSession; @@ -37,6 +39,7 @@ public class UserSessionView { private String login, authProvider; private String fromFQN; private Date lastClickTime; + private Date lastAccessTime; private long sessionDuration; private String mode; @@ -75,6 +78,16 @@ public class UserSessionView { mode = sessInfo.getWebMode(); } } + + HttpSession se = sessInfo.getSession(); + if(se != null) { + try { + lastAccessTime = new Date(se.getLastAccessedTime()); + } catch (Exception e) { + lastAccessTime = null; + } + } + } public UserSession getUserSession() { @@ -111,8 +124,12 @@ public class UserSessionView { public Date getLastClickTime() { return lastClickTime; - } + } + public Date getLastAccessTime() { + return lastAccessTime; + } + public long getSessionDuration() { return sessionDuration; }