Index: lams_admin/conf/language/lams/ApplicationResources_el_GR.properties
===================================================================
diff -u -r3f3f34c22194aeaf302e1fd332925dffd35019aa -re57933d5f4b215e037a34229c3d479f707cf5156
--- lams_admin/conf/language/lams/ApplicationResources_el_GR.properties (.../ApplicationResources_el_GR.properties) (revision 3f3f34c22194aeaf302e1fd332925dffd35019aa)
+++ lams_admin/conf/language/lams/ApplicationResources_el_GR.properties (.../ApplicationResources_el_GR.properties) (revision e57933d5f4b215e037a34229c3d479f707cf5156)
@@ -38,7 +38,7 @@
msg.add.to.org = Χρήστης θα προστεθεί στο {0} .
msg.results.none = Τα αποτελέσματα δεν ταιριάζουν στο αίτημά σας.
msg.users.added = {0} χρήστες προστέθηκαν στις ομάδες/υποομάδες
-msg.disable.user.1 = Αυτός ο χρήστης έχει μάθημα και/ή δεδομένα ακολουθίας σχετίζονται μ αυτό και έτσι δεν μπορεί να διαγραφεί.
+msg.disable.user.1 = Αυτός ο χρήστης έχει μάθημα και/ή δεδομένα ακολουθίας που συσχετίζονται με αυτό και έτσι δεν μπορεί να διαγραφεί.
msg.disable.user.2 = Ο χρήστης θάναι απενεργοποιημένος, διαχειριζονατς τα δεδομένα τους, αλλά ο λογαραισμός θα συμπεριφέρεται σαν να είναι διεγραμμένος.
msg.disable.user.3 = Δεν εμφανίζεται στις λίστες ομάδας/υποομάδας, ούτε ο χρήστης δε έχει τη δυνατότητα πρόσβασης
msg.disable.user.4 = Μπορείτε να ενεργοποιήσετε πάλι το λογαριασμό του χρήστη με την επεξεργασία του προφίλ χρήστη.
@@ -658,3 +658,36 @@
tool.groups.group.name.error = Το όνομα μιας ομάδας δεν μπορεί να είναι κενό
tool.groups.save.error = Σφάλμα κατά την αποθήκευση ομάδων
config.login.as.enable = Ενεργοποίηση δυνατότητας σύνδεσης ως χαρακτηριστικό για διαχειριστές
+sysadmin.lti.advantage = Προχωρημένες Ρυθμίσεις LTI
+sysadmin.use.course.prefix = Χρήση προθέματος κατά τη δημιουργία νέων χρηστών και σειρών μαθημάτων
+sysadmin.user.registration.enabled = Να επιτρέπεται η δημιουργία νέων χρηστών
+sysadmin.user.name.lower.case = Μετατροπή ονομάτων χρηστών σε πεζά πριν από την εγγραφή και τη σύνδεση
+sysadmin.lti.advantage.enforce.state.cookie = Αποστολή cookie "κατάστασης" κατά τον έλεγχο ταυτότητας, ακόμη και αν οι τομείς εργαλείων και πλατφόρμας δεν ταιριάζουν
+sysadmin.lti.advantage.tool.reregistration.enabled = Να επιτρέπεται η επαναχρησιμοποίηση του συνδέσμου δυναμικής καταχώρησης
+sysadmin.lti.advantage.platform.issuer = Εκδότης πλατφόρμας (όνομα πλατφόρμας)
+sysadmin.lti.advantage.platform.keyset.url = URL συνόλου κλειδιών πλατφόρμας
+sysadmin.lti.advantage.platform.oidc.url = Διεύθυνση URL ελέγχου ταυτότητας πλατφόρμας OIDC
+sysadmin.lti.advantage.platform.access.token.url = URL διακριτικού πρόσβασης πλατφόρμας
+sysadmin.lti.advantage.tool.name = Όνομα εργαλείου
+sysadmin.lti.advantage.tool.description = Περιγραφή εργαλείου
+sysadmin.lti.advantage.tool.client.id = Αναγνωριστικό (ID) εργαλείου πελάτη
+sysadmin.lti.advantage.tool.keyset.url = URL συνόλου κλειδιών εργαλείου
+sysadmin.lti.advantage.tool.key.id = Αναγνωριστικό (ΙD) κλειδί εργαλείου
+sysadmin.lti.advantage.tool.public.key = Δημόσιο κλειδί
+sysadmin.lti.advantage.tool.private.key = Ιδιωτικό κλειδί
+sysadmin.add.staff.to.all.lessons = Κατά τη σύνδεση του προσωπικού προσθέστε τους σε όλα τα μαθήματα της σειράς μαθημάτων
+user.import.password.change.email.content.subject = Ρύθμιση κωδικού πρόσβασης στο LAMS
+user.import.password.change.email.content.start = Γεια σου {0},
+user.import.password.change.email.content.account.created = Έχουμε δημιουργήσει έναν λογαριασμό για εσάς στην πλατφόρμα LAMS. Το όνομα χρήστη σας είναι "{0}". Ακολουθήστε αυτόν τον σύνδεσμο για να ορίσετε τον κωδικό πρόσβασής σας: {1}
+user.import.password.change.email.content.link.label = ΡΎΘΜΙΣΗ ΚΩΔΙΚΟΎ ΠΡΌΣΒΑΣΗΣ στο LAMS
+user.import.password.change.email.content.end = Εάν ο σύνδεσμος έληξε, μεταβείτε στο {0} και κάντε κλικ στο σύνδεσμο "Ξεχάσατε τον κωδικό πρόσβασής σας;".
+user.import.password.change.email.content.thanks = Ευχαριστώ
+user.import.password.change.email.content.footer = LAMS
+label.import.email = Email ενεργοποίησης λογαριασμών ηλεκτρονικού ταχυδρομείου χρηστών
+msg.password.generated = για το όνομα χρήστη "{0}" δημιουργήθηκε ο ακόλουθος κωδικός πρόσβασης: {1}
+sysadmin.cleanup = Εκκαθάριση προσωρινής μνήμης (cache) και αρχείων
+sysadmin.cache.clear = Εκκαθάριση προσωρινής μνήμης αδρανοποίησης (Hibernate)
+sysadmin.clear = Εκκαθάριση
+sysadmin.cache.cleared = Η προσωρινή μνήμη (Cache) διαγράφηκε
+sysadmin.garbage.clear = Εκτέλεση του συλλέκτη σκουπιδιών
+sysadmin.garbage.cleared = Ενεργοποιήθηκε ο Συλλέκτης Σκουπιδιών
Index: lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java
===================================================================
diff -u -r3f3f34c22194aeaf302e1fd332925dffd35019aa -re57933d5f4b215e037a34229c3d479f707cf5156
--- lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java (.../ImportService.java) (revision 3f3f34c22194aeaf302e1fd332925dffd35019aa)
+++ lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java (.../ImportService.java) (revision e57933d5f4b215e037a34229c3d479f707cf5156)
@@ -377,9 +377,9 @@
private void sendUserImportPasswordChangeEmail(User user) {
try {
if (USER_IMPORT_PASSWORD_CHANGE_EMAIL_TEMPLATE_CONTENT == null) {
- USER_IMPORT_PASSWORD_CHANGE_EMAIL_TEMPLATE_CONTENT = Files
- .readString(Paths.get(Configuration.get(ConfigurationKeys.LAMS_EAR_DIR), FileUtil.LAMS_WWW_DIR,
- "userImportPasswordChangeEmailTemplate.html"));
+ USER_IMPORT_PASSWORD_CHANGE_EMAIL_TEMPLATE_CONTENT = Files.readString(
+ Paths.get(Configuration.get(ConfigurationKeys.LAMS_EAR_DIR), FileUtil.LAMS_CENTRAL_WAR_DIR,
+ "templates", "userImportPasswordChangeEmailTemplate.html"));
}
String key = RandomPasswordGenerator.generateForgotPasswordKey();
Index: lams_admin/web/policies/policies.jsp
===================================================================
diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -re57933d5f4b215e037a34229c3d479f707cf5156
--- lams_admin/web/policies/policies.jsp (.../policies.jsp) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69)
+++ lams_admin/web/policies/policies.jsp (.../policies.jsp) (revision e57933d5f4b215e037a34229c3d479f707cf5156)
@@ -51,13 +51,15 @@
$(document).on("click", ".change-status-link", function() {
var policyUid = $(this).data("policy-uid");
var policyId = $(this).data("policy-id");
+ var policyStateId = $(this).data("policy-state");
$("#policy-table").load(
"togglePolicyStatus.do?",
{
policyUid: policyUid,
policyId: policyId,
- viewPreviousVersions: "${viewPreviousVersions}"
+ viewPreviousVersions: "${viewPreviousVersions}",
+ policyStateId: policyStateId
},
function() {}
);
Index: lams_central/conf/language/lams/ApplicationResources_el_GR.properties
===================================================================
diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -re57933d5f4b215e037a34229c3d479f707cf5156
--- lams_central/conf/language/lams/ApplicationResources_el_GR.properties (.../ApplicationResources_el_GR.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69)
+++ lams_central/conf/language/lams/ApplicationResources_el_GR.properties (.../ApplicationResources_el_GR.properties) (revision e57933d5f4b215e037a34229c3d479f707cf5156)
@@ -1122,3 +1122,4 @@
label.authoring.short.answer.hint = Σε κάθε πλαίσιο επιλογών πληκτρολογήστε τις απαντήσεις σε ξεχωριστές γραμμές.
label.vsa.allocate.button = Εκχώρηση VSAs
label.vsa.allocate.description = Κατανομή των απαντήσεων των εκπαιδευόμενων με σύρσιμο και απόθεση των σωστών επιλογών
+signup.email.verify.subject = LAMS επιβεβαιώστε τη διεύθυνση ηλεκτρονικού ταχυδρομείου
Index: lams_central/src/java/org/lamsfoundation/lams/web/IndexController.java
===================================================================
diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -re57933d5f4b215e037a34229c3d479f707cf5156
--- lams_central/src/java/org/lamsfoundation/lams/web/IndexController.java (.../IndexController.java) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69)
+++ lams_central/src/java/org/lamsfoundation/lams/web/IndexController.java (.../IndexController.java) (revision e57933d5f4b215e037a34229c3d479f707cf5156)
@@ -96,20 +96,26 @@
userDTO.setFirstLogin(false);
}
- if (user.getPasswordChangeDate() != null) {
- int expirationPeriod = Configuration.getAsInt(ConfigurationKeys.PASSWORD_EXPIRATION_MONTHS);
- if (expirationPeriod > 0) {
- LocalDateTime expirationDate = user.getPasswordChangeDate().plusMonths(expirationPeriod);
- if (LocalDateTime.now().isAfter(expirationDate)) {
- user.setChangePassword(true);
- userManagementService.save(user);
- return "forward:/password.do?passwordExpired=true";
+ HttpSession session = request.getSession();
+ Boolean isIntegrationLogin = (Boolean) session.getAttribute("isIntegrationLogin");
+ isIntegrationLogin = isIntegrationLogin != null && isIntegrationLogin;
+
+ if (!isIntegrationLogin) {
+ if (user.getPasswordChangeDate() != null) {
+ int expirationPeriod = Configuration.getAsInt(ConfigurationKeys.PASSWORD_EXPIRATION_MONTHS);
+ if (expirationPeriod > 0) {
+ LocalDateTime expirationDate = user.getPasswordChangeDate().plusMonths(expirationPeriod);
+ if (LocalDateTime.now().isAfter(expirationDate)) {
+ user.setChangePassword(true);
+ userManagementService.save(user);
+ return "forward:/password.do?passwordExpired=true";
+ }
}
}
- }
- if (user.getChangePassword() != null && user.getChangePassword()) {
- return "forward:/password.do";
+ if (user.getChangePassword() != null && user.getChangePassword()) {
+ return "forward:/password.do";
+ }
}
// check if user needs to get his shared two-factor authorization secret
Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java
===================================================================
diff -u -rc4c29fd5db10de898ba8f9892236d6d537efba0f -re57933d5f4b215e037a34229c3d479f707cf5156
--- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision c4c29fd5db10de898ba8f9892236d6d537efba0f)
+++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision e57933d5f4b215e037a34229c3d479f707cf5156)
@@ -1087,9 +1087,9 @@
public String getReleaseMarksEmailContent(long lessonID, int userID) {
if (RELEASE_MARKS_EMAIL_TEMPLATE_CONTENT == null) {
try {
- RELEASE_MARKS_EMAIL_TEMPLATE_CONTENT = Files
- .readString(Paths.get(Configuration.get(ConfigurationKeys.LAMS_EAR_DIR), FileUtil.LAMS_WWW_DIR,
- "gradebookReleaseLessonMarksEmailTemplate.html"));
+ RELEASE_MARKS_EMAIL_TEMPLATE_CONTENT = Files.readString(
+ Paths.get(Configuration.get(ConfigurationKeys.LAMS_EAR_DIR), FileUtil.LAMS_CENTRAL_WAR_DIR,
+ "templates", "gradebookReleaseLessonMarksEmailTemplate.html"));
} catch (Exception e) {
throw new RuntimeException("Can not read release marks email template", e);
}
Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java
===================================================================
diff -u -rc4c29fd5db10de898ba8f9892236d6d537efba0f -re57933d5f4b215e037a34229c3d479f707cf5156
--- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision c4c29fd5db10de898ba8f9892236d6d537efba0f)
+++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision e57933d5f4b215e037a34229c3d479f707cf5156)
@@ -1115,10 +1115,25 @@
public static boolean isItemUnraveledByAnswers(ScratchieItem item, List userAnswers) {
QbQuestion qbQuestion = item.getQbQuestion();
- QbOption correctAnswersGroup = qbQuestion.getQbOptions().get(0).isCorrect() ? qbQuestion.getQbOptions().get(0)
- : qbQuestion.getQbOptions().get(1);
+ QbOption correctAnswersGroup = null;
+ // find which option is the correct one, in VSA terms
+ for (QbOption option : qbQuestion.getQbOptions()) {
+ if (option.isCorrect()) {
+ // if the options has 100%, it is obviously the correct one
+ correctAnswersGroup = option;
+ break;
+ }
+ // if the option has the highest grade, it is considered the correct one
+ if (correctAnswersGroup == null ? option.getMaxMark() > 0 : option.getMaxMark() > correctAnswersGroup.getMaxMark()) {
+ correctAnswersGroup = option;
+ }
+ }
+ if (correctAnswersGroup == null) {
+ return false;
+ }
+
+
String name = correctAnswersGroup.getName();
-
for (String userAnswer : userAnswers) {
String normalisedQuestionAnswer = QbUtils.normaliseVSAnswer(userAnswer, qbQuestion.isExactMatch());
if (QbUtils.isVSAnswerAllocated(name, normalisedQuestionAnswer, qbQuestion.isCaseSensitive(),