Skip to content
Snippets Groups Projects
Commit 2dfed9c1 authored by srosse's avatar srosse
Browse files

OO-4088: show licenses based on config., add warning by lic. mismatch

parent bc7d1150
No related branches found
No related tags found
No related merge requests found
......@@ -25,6 +25,7 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.olat.core.commons.services.license.LicenseModule;
import org.olat.core.commons.services.license.LicenseService;
import org.olat.core.commons.services.license.ResourceLicense;
import org.olat.core.commons.services.license.ui.LicenseUIFactory;
......@@ -63,7 +64,9 @@ import org.olat.ims.qti21.ui.editor.events.SelectEvent.SelectionTarget;
import org.olat.ims.qti21.ui.editor.overview.AssessmentTestOverviewDataModel.PartCols;
import org.olat.modules.qpool.QPoolService;
import org.olat.modules.qpool.QuestionItemShort;
import org.olat.modules.qpool.manager.QuestionPoolLicenseHandler;
import org.olat.repository.RepositoryEntry;
import org.olat.repository.manager.RepositoryEntryLicenseHandler;
import org.olat.user.UserManager;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -90,6 +93,7 @@ public class AssessmentTestOverviewConfigurationController extends FormBasicCont
private AssessmentTestOverviewDataModel tableModel;
private final TooledStackedPanel toolbar;
private final boolean withLicenses;
private final RepositoryEntry testEntry;
private final ManifestBuilder manifestBuilder;
private final ResolvedAssessmentTest resolvedAssessmentTest;
......@@ -100,6 +104,13 @@ public class AssessmentTestOverviewConfigurationController extends FormBasicCont
private QPoolService qpoolService;
@Autowired
private LicenseService licenseService;
@Autowired
private LicenseModule licenseModule;
@Autowired
private QuestionPoolLicenseHandler poolLicenseHandler;
@Autowired
private RepositoryEntryLicenseHandler repositoryEntryLicenseHandler;
public AssessmentTestOverviewConfigurationController(UserRequest ureq, WindowControl wControl, TooledStackedPanel toolbar,
RepositoryEntry testEntry, ResolvedAssessmentTest resolvedAssessmentTest, ManifestBuilder manifestBuilder) {
......@@ -108,6 +119,7 @@ public class AssessmentTestOverviewConfigurationController extends FormBasicCont
this.manifestBuilder = manifestBuilder;
this.resolvedAssessmentTest = resolvedAssessmentTest;
this.toolbar = toolbar;
withLicenses = licenseModule.isEnabled(poolLicenseHandler) || licenseModule.isEnabled(repositoryEntryLicenseHandler);
initForm(ureq);
initialPanel.setCssClass("o_edit_mode");
loadModel();
......@@ -215,8 +227,9 @@ public class AssessmentTestOverviewConfigurationController extends FormBasicCont
DefaultFlexiColumnModel feedbackCol = new DefaultFlexiColumnModel(PartCols.feedback, SelectionTarget.feedback.name(), new YesNoCellRenderer(getTranslator()));
feedbackCol.setDefaultVisible(false);
tableColumnModel.addFlexiColumnModel(feedbackCol);
// license
tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, PartCols.license));
if(withLicenses) {
tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, PartCols.license));
}
tableModel = new AssessmentTestOverviewDataModel(tableColumnModel);
......@@ -256,8 +269,10 @@ public class AssessmentTestOverviewConfigurationController extends FormBasicCont
if(aggregatedValues.getLearningTime() != null) {
testRow.setLearningTime(aggregatedValues.getLearningTime());
}
loadLicenses(rows);
if(withLicenses) {
loadLicenses(rows);
}
tableModel.setObjects(rows);
tableEl.reset(true, true, true);
}
......
......@@ -25,9 +25,11 @@ import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import org.olat.core.CoreSpringFactory;
import org.olat.core.commons.services.license.LicenseModule;
import org.olat.core.commons.services.license.LicenseService;
import org.olat.core.commons.services.license.LicenseType;
import org.olat.core.commons.services.license.ResourceLicense;
......@@ -35,7 +37,6 @@ import org.olat.core.commons.services.license.ui.LicenseUIFactory;
import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.form.flexible.FormItemContainer;
import org.olat.core.gui.components.form.flexible.impl.FormBasicController;
import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer;
import org.olat.core.gui.components.form.flexible.impl.elements.table.BooleanCellRenderer;
import org.olat.core.gui.components.form.flexible.impl.elements.table.CSSIconFlexiCellRenderer;
import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiColumnModel;
......@@ -53,6 +54,7 @@ import org.olat.modules.qpool.ExportFormatOptions;
import org.olat.modules.qpool.QPoolSPI;
import org.olat.modules.qpool.QuestionItemShort;
import org.olat.modules.qpool.QuestionPoolModule;
import org.olat.modules.qpool.manager.QuestionPoolLicenseHandler;
import org.springframework.beans.factory.annotation.Autowired;
/**
......@@ -63,16 +65,25 @@ import org.springframework.beans.factory.annotation.Autowired;
*/
public class CreateTestOverviewController extends FormBasicController {
private final boolean withLicenses;
private final ExportFormatOptions format;
private QItemDataModel itemsModel;
@Autowired
private LicenseModule licenseModule;
@Autowired
private LicenseService licenseService;
@Autowired
private QuestionPoolLicenseHandler licenseHandler;
public CreateTestOverviewController(UserRequest ureq, WindowControl wControl, List<QuestionItemShort> items,
ExportFormatOptions format) {
super(ureq, wControl, LAYOUT_VERTICAL);
super(ureq, wControl, "create_test");
this.format = format;
withLicenses = licenseModule.isEnabled(licenseHandler);
initForm(ureq);
loadModel(items);
}
......@@ -88,14 +99,14 @@ public class CreateTestOverviewController extends FormBasicController {
));
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.title));
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.format));
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.license));
if(withLicenses) {
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.license));
}
itemsModel = new QItemDataModel(columnsModel, format, getLocale());
uifactory.addTableElement(getWindowControl(), "shares", itemsModel, getTranslator(), formLayout);
FormLayoutContainer buttonLayout = FormLayoutContainer.createButtonLayout("buttons", getTranslator());
formLayout.add("buttons", buttonLayout);
uifactory.addFormSubmitButton("create.test", buttonLayout);
uifactory.addFormCancelButton("cancel", buttonLayout, ureq, getWindowControl());
uifactory.addFormSubmitButton("create.test", formLayout);
uifactory.addFormCancelButton("cancel", formLayout, ureq, getWindowControl());
}
private void loadModel(List<QuestionItemShort> items) {
......@@ -106,6 +117,14 @@ public class CreateTestOverviewController extends FormBasicController {
.map(item -> new QuestionRow(item, resourceLicensesMap.get(item.getKey())))
.collect(Collectors.toList());
itemsModel.setObjects(rows);
if(withLicenses) {
Set<LicenseType> licenseTypes = resourceLicenses.stream()
.map(ResourceLicense::getLicenseType)
.collect(Collectors.toSet());
if(licenseTypes.size() > 1) {
flc.contextPut("licenseWarning", Boolean.TRUE);
}
}
}
public String getResourceTypeFormat() {
......
#if($r.isTrue($licenseWarning))
<div class="o_warning"><h5>$r.translate("warning.different.licenses.title")</h5>
$r.translate("warning.different.licenses")</div>
#end
$r.render("shares")
<div class="o_button_group">
$r.render("cancel")
$r.render("create.test")
</div>
\ No newline at end of file
......@@ -285,5 +285,8 @@ topnav.qpool=Fragenpool
topnav.qpool.alt=Fragedatenbanken und Freigabe von Fragen
unshare.item=Entfernen
used=Verwendet
warning.different.licenses.title=Nichtbereinstimmung der Lizenzen
warning.different.licenses=Beachten Sie, dass Sie Fragen mit unterschiedlichen Lizenzen ausgewhlt haben. Bitte stellen Sie sicher, dass Sie eine geeignete Lizenz fr den Test auswhlen, falls Sie den Test mit anderen Autoren teilen mchten.
warning.item.deleted=Die Frage wurde gel\u00F6scht oder entfernt.
warning.qpool.index.emtpy=Die Fragenpool-Infoseite wurde nicht konfiguriert. Bitten Sie den Systemadministrator, eine Infoseite im <strong>Administrationsbereich des Fragenpools</strong> hinzuzuf\u00FCgen.
......@@ -285,5 +285,7 @@ topnav.qpool=Question bank
topnav.qpool.alt=Question pools and shares
unshare.item=Remove
used=Used
warning.different.licenses.title=License mismatch
warning.different.licenses=Note that you have selected question items with different licenses. Please make sure you select an appropriate license for the test in case you want to share the test with other authors.
warning.item.deleted=The question has been deleted or removed.
warning.qpool.index.emtpy=The question pool info page has not been configured properly. Please ask the system administrator to add an info page in the <strong>question pool administration</strong>.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment