use of org.olat.modules.qpool.QuestionItem in project OpenOLAT by OpenOLAT.
the class QuestionItemDetailsController method event.
@Override
protected void event(UserRequest ureq, Controller source, Event event) {
if (source == copyConfirmationCtrl) {
doPostCopy(ureq, event);
cmc.deactivate();
cleanUp();
} else if (source == conversionConfirmationCtrl) {
doPostConvert(ureq, event);
cmc.deactivate();
cleanUp();
} else if (source == selectGroupCtrl) {
if (event instanceof BusinessGroupSelectionEvent) {
BusinessGroupSelectionEvent bge = (BusinessGroupSelectionEvent) event;
List<BusinessGroup> groups = bge.getGroups();
if (groups.size() > 0) {
QuestionItem item = (QuestionItem) ((SelectBusinessGroupController) source).getUserObject();
doShareItemsWithGroup(ureq, item, groups);
metadatasCtrl.updateShares();
}
}
cmc.deactivate();
cleanUp();
} else if (source == selectPoolCtrl) {
cmc.deactivate();
if (event instanceof QPoolSelectionEvent) {
QPoolSelectionEvent qpe = (QPoolSelectionEvent) event;
List<Pool> pools = qpe.getPools();
if (pools.size() > 0) {
QuestionItemShort item = (QuestionItemShort) selectPoolCtrl.getUserObject();
doShareItemsWithPool(ureq, item, pools);
metadatasCtrl.updateShares();
}
}
cleanUp();
} else if (source == reviewActionCtrl) {
if (QItemReviewEvent.START.equals(event.getCommand())) {
doConfirmStartReview(ureq);
} else if (QItemReviewEvent.DO.equals(event.getCommand())) {
openReview(ureq);
}
} else if (source == reviewStartCtrl) {
if (event == Event.DONE_EVENT) {
TaxonomyLevel taxonomyLevel = reviewStartCtrl.getSelectedTaxonomyLevel();
doStartReview(ureq, taxonomyLevel);
}
cmc.deactivate();
cleanUp();
} else if (source == reviewCtrl) {
if (event == Event.DONE_EVENT) {
float rating = reviewCtrl.getCurrentRatting();
String comment = reviewCtrl.getComment();
doRate(ureq, rating, comment);
}
cmc.deactivate();
cleanUp();
} else if (source == confirmEndOfLifeCtrl) {
boolean endOfLife = DialogBoxUIFactory.isYesEvent(event) || DialogBoxUIFactory.isOkEvent(event);
if (endOfLife) {
QuestionItem item = (QuestionItem) confirmEndOfLifeCtrl.getUserObject();
doEndOfLife(ureq, item);
}
cleanUp();
} else if (source == deleteConfirmationCtrl) {
if (event == Event.DONE_EVENT) {
List<QuestionItemShort> items = deleteConfirmationCtrl.getItemsToDelete();
doDelete(ureq, items);
}
cmc.deactivate();
cleanUp();
} else if (source == cmc) {
cleanUp();
} else if (source == questionCtrl) {
if (event instanceof QItemEdited) {
questionEdited = true;
fireEvent(ureq, event);
}
} else if (source == metadatasCtrl) {
if (event instanceof QItemEdited) {
reloadData(ureq);
fireEvent(ureq, event);
}
}
super.event(ureq, source, event);
}
use of org.olat.modules.qpool.QuestionItem in project OpenOLAT by OpenOLAT.
the class QuestionItemDetailsController method doStartReview.
private void doStartReview(UserRequest ureq, TaxonomyLevel taxonomyLevel) {
QuestionItem item = metadatasCtrl.getItem();
if (item instanceof QuestionItemImpl) {
QuestionItemImpl itemImpl = (QuestionItemImpl) item;
if (itemImpl.getTaxonomyLevel() == null || !itemImpl.getTaxonomyLevel().equals(taxonomyLevel)) {
itemImpl.setTaxonomyLevel(taxonomyLevel);
}
}
doChangeQuestionStatus(ureq, item, QuestionStatus.review);
}
use of org.olat.modules.qpool.QuestionItem in project OpenOLAT by OpenOLAT.
the class QuestionListController method doDelete.
private void doDelete(List<QuestionItemShort> items) {
for (QuestionItemShort item : items) {
QuestionItem qitem = qpoolService.loadItemById(item.getKey());
QuestionItemAuditLogBuilder builder = qpoolService.createAuditLogBuilder(getIdentity(), Action.DELETE_QUESTION_ITEM);
builder.withBefore(qitem);
qpoolService.persist(builder.create());
}
qpoolService.deleteItems(items);
getItemsTable().reset(true, true, true);
showInfo("item.deleted");
}
use of org.olat.modules.qpool.QuestionItem in project OpenOLAT by OpenOLAT.
the class QuestionListController method doOpenDetails.
private void doOpenDetails(UserRequest ureq, ItemRow row, int index, int count) {
removeAsListenerAndDispose(currentDetailsCtrl);
QuestionItem item = qpoolService.loadItemById(row.getKey());
if (item == null) {
showWarning("warning.item.deleted");
} else {
WindowControl bwControl = addToHistory(ureq, item, null);
currentDetailsCtrl = new QuestionItemDetailsController(ureq, bwControl, stackPanel, getSecurityCallback(), item, row.getSecurityCallback(), getSource(), index, count);
listenTo(currentDetailsCtrl);
stackPanel.pushController(item.getTitle(), currentDetailsCtrl);
}
}
use of org.olat.modules.qpool.QuestionItem in project OpenOLAT by OpenOLAT.
the class QuestionListController method doOpenExcelImportQTI21.
private void doOpenExcelImportQTI21(UserRequest ureq) {
removeAsListenerAndDispose(excelImportWizard);
Step additionalStep = null;
if (getSource().askEditable()) {
additionalStep = new EditableStep(ureq);
}
final AssessmentItemsPackage importPackage = new AssessmentItemsPackage();
final ImportOptions options = new ImportOptions();
options.setShuffle(true);
Step start = new QImport_1_InputStep(ureq, importPackage, options, additionalStep);
StepRunnerCallback finish = new StepRunnerCallback() {
@Override
public Step execute(UserRequest uureq, WindowControl wControl, StepsRunContext runContext) {
QTI21QPoolServiceProvider spi = CoreSpringFactory.getImpl(QTI21QPoolServiceProvider.class);
List<AssessmentItemAndMetadata> items = importPackage.getItems();
List<QuestionItem> importItems = new ArrayList<>();
for (AssessmentItemAndMetadata item : items) {
QuestionItem importedItem = spi.importExcelItem(getIdentity(), item, getLocale());
if (importedItem != null) {
importItems.add(importedItem);
}
}
for (QuestionItem item : importItems) {
QuestionItemAuditLogBuilder builder = qpoolService.createAuditLogBuilder(getIdentity(), Action.CREATE_QUESTION_ITEM_BY_IMPORT);
builder.withAfter(item);
qpoolService.persist(builder.create());
}
boolean editable = true;
if (getSource().askEditable()) {
Object editableCtx = runContext.get("editable");
editable = (editableCtx instanceof Boolean) ? ((Boolean) editableCtx).booleanValue() : false;
}
qpoolService.index(importItems);
int postImported = getSource().postImport(importItems, editable);
if (postImported > 0) {
getItemsTable().reset();
}
return StepsMainRunController.DONE_MODIFIED;
}
};
excelImportWizard = new StepsMainRunController(ureq, getWindowControl(), start, finish, null, translate("import.excellike.21"), "o_sel_qpool_excel_import_wizard");
listenTo(excelImportWizard);
getWindowControl().pushAsModalDialog(excelImportWizard.getInitialComponent());
}
Aggregations