Skip to content
Snippets Groups Projects
Commit 6d4949cd authored by Daniel Haag's avatar Daniel Haag
Browse files

OPENOLAT-266: Disable test replacement button for non admins when testresults exist.

parent 8d957c93
No related branches found
No related tags found
No related merge requests found
......@@ -83,6 +83,7 @@ import org.olat.course.tree.CourseInternalLinkTreeModel;
import org.olat.fileresource.FileResourceManager;
import org.olat.ims.qti.QTIResult;
import org.olat.ims.qti.QTIResultManager;
import org.olat.ims.qti.QTIResultSet;
import org.olat.ims.qti.editor.QTIEditorPackage;
import org.olat.ims.qti.editor.QTIEditorPackageImpl;
import org.olat.ims.qti.editor.beecom.objects.Assessment;
......@@ -334,8 +335,6 @@ public class IQEditController extends ActivateableTabbableDefaultController impl
myContent = createVelocityContainer("edit");
chooseTestButton = LinkFactory.createButtonSmall("command.chooseRepFile", myContent, this);
chooseTestButton.setElementCssClass("o_sel_test_choose_repofile");
changeTestButton = LinkFactory.createButtonSmall("command.changeRepFile", myContent, this);
changeTestButton.setElementCssClass("o_sel_test_change_repofile");
// fetch repository entry
RepositoryEntry re = null;
......@@ -370,6 +369,14 @@ public class IQEditController extends ActivateableTabbableDefaultController impl
previewLink.setTitle(getTranslator().translate("command.preview"));
}
if (re == null || !isRestricted(re)) {
changeTestButton = LinkFactory.createButtonSmall("command.changeRepFile", myContent, this);
changeTestButton.setElementCssClass("o_sel_test_change_repofile");
} else if (ureq.getUserSession().getRoles().isOLATAdmin()) {
changeTestButton = LinkFactory.createButtonSmall("command.changeRepFile", myContent, this);
changeTestButton.setElementCssClass("o_sel_test_change_repofile o_button_dirty");
}
String disclaimer = (String) moduleConfiguration.get(CONFIG_KEY_DISCLAIMER);
//allowRelativeLinks = courseNode.getModuleConfiguration().getBooleanEntry(CONFIG_KEY_ALLOW_RELATIVE_LINKS);
......@@ -440,6 +447,30 @@ public class IQEditController extends ActivateableTabbableDefaultController impl
|| RepositoryManager.getInstance().isInstitutionalRessourceManagerFor(identity, roles, re));
}
/**
* Checks if the QTI Test has already test results
* @param repository entry
* @return
*/
private boolean isRestricted(RepositoryEntry re) {
OLATResource res = re.getOlatResource();
if (OnyxModule.isOnyxTest(res)) {
QTIResultManager qrm = QTIResultManager.getInstance();
List<QTIResultSet> resultSets = qrm.getResultSets(course.getResourceableId(),
courseNode.getIdent(),
re.getKey(),
null);
return (resultSets.size() > 0);
} else {
String repositorySoftKey = (String) courseNode.getModuleConfiguration().get(IQEditController.CONFIG_KEY_REPOSITORY_SOFTKEY);
Long repKey = RepositoryManager.getInstance().lookupRepositoryEntryBySoftkey(repositorySoftKey, true).getKey();
boolean restrictedEdit = false;
restrictedEdit = QTIResultManager.getInstance().countResults(course.getResourceableId(), courseNode.getIdent(), repKey) > 0;
return restrictedEdit;
}
}
/**
* @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest,
* org.olat.core.gui.components.Component, org.olat.core.gui.control.Event)
......
......@@ -22,7 +22,9 @@
</div>
<div class="form-group">
<div class="col-sm-offset-3 col-sm-9">
$r.render("command.changeRepFile")
#if($r.available("command.changeRepFile"))
$r.render("command.changeRepFile")
#end
#if($r.available("command.editRepFile"))
$r.render("command.editRepFile")
#end
......
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