Index: lams_central/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -ra5caeb34843b9f5ac91452490ec06d411e0e968a -r5523969e2d7fc452301bf0a8403e5afbbae6c92a --- lams_central/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision a5caeb34843b9f5ac91452490ec06d411e0e968a) +++ lams_central/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 5523969e2d7fc452301bf0a8403e5afbbae6c92a) @@ -430,7 +430,7 @@ label.lesson.introduction.updated = Introduction updated no.such.signup.page.exist = No such signup page exists error.lockedout = Due to consecutive failed attempts, the account has been locked out temporarily. -error.email.internal = An internal error occured. Try again using your username or contact your system administrator. More information is provided in application logs. +error.email.internal = An internal error occurred. Try again using your username or contact your system administrator. More information is provided in application logs. label.theme = Theme authoring.fla.default.group.title = Grouping authoring.fla.default.group.prefix = Group @@ -463,7 +463,7 @@ authoring.fla.sequence.validation.issues = While saving the design there were following validation issues: authoring.fla.save.successful = The design is valid and has been saved. authoring.fla.liveedit.save.successful = Changes were successfully applied. -authoring.fla.navigate.away.confirm = Your design is not saved.\\nAny changes you made since you last saved will be lost. +authoring.fla.navigate.away.confirm = Your design is not saved.\\n Any changes you made since you last saved will be lost. authoring.fla.delete.node.confirm = Are you sure you want to delete this authoring.fla.sequence.overwrite.confirm = Are you sure you want to overwrite the existing design? authoring.fla.new.folder.title.prompt = Please enter the name for a new folder @@ -480,14 +480,14 @@ authoring.fla.sequence.load.error = Error while loading the design authoring.fla.transition.from.exists.error = Transition from this activity already exists authoring.fla.export.sequence.dialog.title = Design export -authoring.fla.activity.copy.title.prefix = Copy [0]of +authoring.fla.activity.copy.title.prefix = Copy [0] of authoring.fla.preview.lesson.default.title = Preview authoring.fla.save.dialog.title = Save design authoring.fla.open.dialog.title = Open design authoring.fla.import.dialog.title = Import Learning Design authoring.fla.import.part.dialog.title = Import activities authoring.fla.run.sequences.folder = Run sequences -authoring.fla.arrange.confirm = There are annotations on the canvas.\\n\ They will be not arranged automatically, you will have to adjust them manually later.\\n\ Do you want to continue? +authoring.fla.arrange.confirm = There are annotations on the canvas.\\n They will be not arranged automatically, you will have to adjust them manually later.\\n Do you want to continue? authoring.fla.clear.canvas.confirm = You have got unsaved changes. They will be lost. Do you want to continue? authoring.fla.branching.start.place.prompt = Place the branching point authoring.fla.branching.end.place.prompt = Place the converge point @@ -529,7 +529,7 @@ authoring.fla.less.condition.description = Less than or eq authoring.fla.greater.condition.description = Greater than or eq authoring.fla.default.range.condition.title.prefix = Untitled -authoring.fla.clear.all.confirm = There are conditions linked to an existing branch.\\nDo you wish to remove them? +authoring.fla.clear.all.confirm = There are conditions linked to an existing branch.\\n Do you wish to remove them? authoring.fla.remove.condition.confirm = This condition is linked to an existing branch.\\nDo you wish to remove it? authoring.fla.refresh.conditions.confirm = You are about to update your conditions for the selected output definition.\\n\ This will clear all links to existing branches.\\nDo you wish to continue? authoring.fla.conditions.to.default.gate.state.confirm = All remaining conditions will be mapped to the selected gate\\'s closed state @@ -607,7 +607,7 @@ authoring.fla.page.prop.branching.sequences.max = Max sequences: authoring.fla.page.prop.optional.activities.min = Min activities: authoring.fla.page.prop.optional.activities.max = Max activities: -authoring.fla.page.prop.color = Color: +authoring.fla.page.prop.color = Colour: authoring.fla.page.dialog.cond.output.choose = [ Choose Output ] authoring.fla.page.dialog.cond.options.choose = [ Options ] authoring.fla.page.dialog.cond.greater = Greater than or equal to @@ -699,7 +699,7 @@ authoring.fla.weights.output = Output authoring.fla.weights.weight = Weight authoring.fla.weights.sum = Sum -authoring.fla.weights.sum.error = Output weights do not sum up to 100%. Adjust them in Weights dialog. +authoring.fla.weights.sum.error = Output weights do not sum up to 100%. Adjust them in Weights dialogue. label.tab.advanced.field.gradebook.complete = Display activity scores on completion index.kumalive = Kumalive index.kumalive.tooltip = Enter a live lesson @@ -712,7 +712,7 @@ label.upload.group.spreadsheet = Upload Finished Spreadsheet error.file.required = Grouped Spreadsheet Required error.file.wrong.format = Grouped Spreadsheet in the wrong format. Please upload a file based on the given template. -label.import.successful = Group Import successful. {0} learners allocated to groups, {1} learners skipped. +label.import.successful = Group Import successful. {0} learners allocated to groups. label.import.warning.replace.groups = Importing this file will replace the existing groups. Do you want to import this file? filename.create.grouping.template = create-grouping-template spreadsheet.column.login = Login @@ -919,7 +919,7 @@ label.export.xml = Export questions in XML format msg.import.file.format = The import file must be .xml file exported from assessment tool and not exceed size of {0} label.qb.stats.title = Question statistics -error.qb.permanent.remove = The question is in one collection only, so it would be permanently removed.\\nIt is not possible as the question is used in other designs. +error.qb.permanent.remove = The question is in one collection only, so it would be permanently removed.\\n It is not possible as the question is used in other designs. label.qb.permanent.remove.confirm = The question is in one collection only. Are you sure that you want to remove it permanently? label.qb.stats.question = Question label.qb.stats.question.version = Version @@ -1149,4 +1149,19 @@ label.questions.choice.collection.new.option = [Add new collection] label.questions.choice.collection.new.prompt = Enter a name for the new collection: label.questions.choice.generate.more = Generate more questions -label.questions.choice.generate.more.error = Error while generating more questions \ No newline at end of file +label.questions.choice.generate.more.error = Error while generating more questions +label.import.openai = Generative AI +label.import.openai.hint = Generate questions with Generative AI +label.questions.choice.taxonomy = Bloom's taxonomy level +label.questions.choice.taxonomy.level.0 = none +label.questions.choice.taxonomy.level.1 = Remember +label.questions.choice.taxonomy.level.2 = Understand +label.questions.choice.taxonomy.level.3 = Apply +label.questions.choice.taxonomy.level.4 = Analyse +label.questions.choice.taxonomy.level.5 = Evaluate +label.questions.choice.taxonomy.level.6 = Create +authoring.fla.page.menu.new.ai = Use AI Wizard +authoring.learning.design.ai.wizard = Learning Design AI Wizard +label.grouping.return.to.monitoring = Return to monitoring +label.import.successful.skipped = {0} learners skipped, including: +label.questions.choice.none.found = No questions available \ No newline at end of file Index: lams_central/web/css/components.css =================================================================== diff -u -r2e18ad656b141c6480e12a8fa6c538556968ce30 -r5523969e2d7fc452301bf0a8403e5afbbae6c92a --- lams_central/web/css/components.css (.../components.css) (revision 2e18ad656b141c6480e12a8fa6c538556968ce30) +++ lams_central/web/css/components.css (.../components.css) (revision 5523969e2d7fc452301bf0a8403e5afbbae6c92a) @@ -425,10 +425,31 @@ .component-page-wrapper { min-height: 100vh; - border-radius: 2rem; + border-radius: 2.8rem; overflow: hidden; } +.component-page-wrapper button.no-decoration { + background-color: inherit; + border: none; +} + +.component-page-wrapper button.no-decoration:focus { + border: thin solid var(--bs-gray-700); +} + +.component-page-wrapper .component-page-content > header .sidebar-toggle-button { + font-size: 2rem; + color: var(--bs-blue); +} + +.component-page-wrapper .component-page-content { + min-height: 100%; + padding: 1rem 2rem 3rem 2rem; + transition: all .3s ease; + vertical-align: top; +} + .component-page-wrapper .component-sidebar { position: absolute; height: initial; Index: lams_central/web/main.jsp =================================================================== diff -u -r54a3c302d29d64b55efa18189083dadd13c51708 -r5523969e2d7fc452301bf0a8403e5afbbae6c92a --- lams_central/web/main.jsp (.../main.jsp) (revision 54a3c302d29d64b55efa18189083dadd13c51708) +++ lams_central/web/main.jsp (.../main.jsp) (revision 5523969e2d7fc452301bf0a8403e5afbbae6c92a) @@ -212,14 +212,22 @@ + +
  • + + + +
  • +
    +
  • - + @@ -333,4 +341,4 @@ - + \ No newline at end of file Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java =================================================================== diff -u -rad4238fead7dcc8bdbf8cc0e180b21b680b9c151 -r5523969e2d7fc452301bf0a8403e5afbbae6c92a --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java (.../MonitoringController.java) (revision ad4238fead7dcc8bdbf8cc0e180b21b680b9c151) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java (.../MonitoringController.java) (revision 5523969e2d7fc452301bf0a8403e5afbbae6c92a) @@ -1040,6 +1040,10 @@ } request.setAttribute("ldPath", ldPathBuilder.toString()); + request.setAttribute(AttributeNames.PARAM_CONTENT_FOLDER_ID, learningDesign.getContentFolderID()); + + request.setAttribute("isIntegrationLogin", ss.getAttribute("isIntegrationLogin")); + return "monitor"; } Index: lams_monitoring/web/includes/javascript/monitorLesson.js =================================================================== diff -u -rad4238fead7dcc8bdbf8cc0e180b21b680b9c151 -r5523969e2d7fc452301bf0a8403e5afbbae6c92a --- lams_monitoring/web/includes/javascript/monitorLesson.js (.../monitorLesson.js) (revision ad4238fead7dcc8bdbf8cc0e180b21b680b9c151) +++ lams_monitoring/web/includes/javascript/monitorLesson.js (.../monitorLesson.js) (revision 5523969e2d7fc452301bf0a8403e5afbbae6c92a) @@ -854,22 +854,18 @@ if (newLessonEndDate) { params.lessonEndDate = newLessonEndDate; } - $.ajax({ url : LAMS_URL + 'monitoring/monitoring/' + method + ".do", data: params, type: "POST", cache : false, success: function() { if (state == 7) { - // user chose to finish the lesson, close monitoring and refresh the lesson list - closeMonitorLessonDialog(true); + // user chose to finish the lesson, close monitoring + document.location.href = "/"; } else { - loadTab(); + document.location.reload(); } - if ( state == 4 ) { - lessonEndDate = newLessonEndDate; - } } }); } @@ -930,64 +926,64 @@ }, plugins : { tooltip : { - enabled : true, - callbacks: { + enabled : true, + callbacks: { label : function(context) { let index = context.dataIndex, rawData = context.chart.lessonCompletionChartRawData, percent = context.dataset.data, - label = labels[index], - value = percent[index], - rawValue = rawData[index]; + label = labels[index], + value = percent[index], + rawValue = rawData[index]; return " " + rawValue + " (" + value + "%)"; - } } - }, - legend : { - position: 'bottom', - align: 'start', - labels : { + } + }, + legend : { + position: 'bottom', + align: 'start', + labels : { font : { size: 15 }, - generateLabels : function(chart) { - var data = chart.data; - if (data.labels.length && data.datasets.length) { - return data.labels.map(function(label, i) { - let meta = chart.getDatasetMeta(0), - style = meta.controller.getStyle(i), - value = data.datasets[0].data[i], - rawData = chart.lessonCompletionChartRawData || raw, - rawValue = rawData[i]; + generateLabels : function(chart) { + var data = chart.data; + if (data.labels.length && data.datasets.length) { + return data.labels.map(function(label, i) { + let meta = chart.getDatasetMeta(0), + style = meta.controller.getStyle(i), + value = data.datasets[0].data[i], + rawData = chart.lessonCompletionChartRawData || raw, + rawValue = rawData[i]; - return { - text: label + ": " + rawValue + " (" + value + "%)", - fillStyle: style.backgroundColor, - strokeStyle: style.borderColor, - lineWidth: 0, - hidden: isNaN(value) || meta.data[i].hidden, + return { + text: label + ": " + rawValue + " (" + value + "%)", + fillStyle: style.backgroundColor, + strokeStyle: style.borderColor, + lineWidth: 0, + hidden: isNaN(value) || meta.data[i].hidden, - // Extra data used for toggling the - // correct item - index: i - }; - }); - } - return []; + // Extra data used for toggling the + // correct item + index: i + }; + }); } + return []; } } + } } } }); lessonCompletionChart.lessonCompletionChartRawData = raw; chartDiv.data('chart', lessonCompletionChart); } - }); + }); } function checkScheduleDate(startDateString, endDateString) { @@ -1008,8 +1004,7 @@ 'lessonStartDate' : date }, success : function() { - lessonStartDate = date; - loadTab(); + document.location.reload(); } }); } else { @@ -1130,7 +1125,7 @@ // put it at the top of the contribution list var cell = $('
    ').addClass('contributeActivityCell').text(LABELS.LIVE_EDIT_BUTTON); var row = $('
    ').addClass('contributeRow').insertAfter(row).append(cell); - var entryContent = LABELS.LIVE_EDIT_TOOLTIP + var entryContent = LABELS.LIVE_EDIT_TOOLTIP + '' + LABELS.CONTRIBUTE_BUTTON + ''; cell = $('
    ').addClass('contributeEntryCell').html(entryContent); @@ -1180,7 +1175,7 @@ } break; - case 6 : entryContent += '' + LABELS.CONTRIBUTE_BUTTON + ''; break; default : entryContent += '