diff --git a/src/main/java/de/bps/onyx/plugin/wsserver/ReturnWSService.java b/src/main/java/de/bps/onyx/plugin/wsserver/ReturnWSService.java index 136c8394fb38308ab22cb05a2ec5a9d6aaf1f5ad..e69b10220a36d6df1b51cd80e8ce97bad9454960 100644 --- a/src/main/java/de/bps/onyx/plugin/wsserver/ReturnWSService.java +++ b/src/main/java/de/bps/onyx/plugin/wsserver/ReturnWSService.java @@ -54,6 +54,7 @@ import org.olat.ims.qti.QTIResultSet; import org.olat.modules.assessment.Role; import org.olat.modules.assessment.model.AssessmentEntryStatus; +import de.bps.onyx.plugin.OnyxModule; import de.bps.onyx.plugin.OnyxResultManager; /** @@ -98,6 +99,11 @@ public class ReturnWSService { public void saveResult(@WebParam(name = "uniqueId") String uniqueId, @WebParam(name = "resultFile") byte[] resultFile, @WebParam(name = "params") MapWrapper params) throws Exception { + if(!CoreSpringFactory.getImpl(OnyxModule.class).isEnabled()) { + log.warn("ReturnWSService unauthorized attempt, service disabled"); + throw new RuntimeException("Onyx plugin disabled"); + } + File temp = null; try { @@ -292,6 +298,11 @@ public class ReturnWSService { @WebMethod public void saveResultLocal(@WebParam(name = "uniqueId") String uniqueId, @WebParam(name = "resultLocalFile") String resultLocalFile) { + if(!CoreSpringFactory.getImpl(OnyxModule.class).isEnabled()) { + log.warn("ReturnWSService unauthorized attempt, service disabled"); + throw new RuntimeException("Onyx plugin disabled"); + } + QTIResultSet qtiResultSet = OnyxResultManager.getResultSet(Long.parseLong(uniqueId)); if (resultLocalFile == null) { diff --git a/src/main/java/de/bps/onyx/plugin/wsserver/TraineeStatusService.java b/src/main/java/de/bps/onyx/plugin/wsserver/TraineeStatusService.java index d85c9cc72ae754be5fced393a0281a16b1db7c3a..0e5c30aadb584aaf7e619bdfb456d4d88c4873fe 100644 --- a/src/main/java/de/bps/onyx/plugin/wsserver/TraineeStatusService.java +++ b/src/main/java/de/bps/onyx/plugin/wsserver/TraineeStatusService.java @@ -27,10 +27,12 @@ import javax.jws.WebParam; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; +import org.olat.core.CoreSpringFactory; import org.olat.core.id.Identity; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; +import de.bps.onyx.plugin.OnyxModule; import de.bps.onyx.util.ExamPoolManager; @WebService(name = "TraineeStatusService", serviceName = "TraineeStatusService", targetNamespace = "http://test.plugin.bps.de/") @@ -46,6 +48,11 @@ public class TraineeStatusService { @WebMethod(operationName = "updateStatus") public void updateStatus(@WebParam(name = "testSessionId") Long testSessionId, @WebParam(name = "studentIds") StudentIdsWrapper studentIds, @WebParam(name = "status") Integer status) { + if(!CoreSpringFactory.getImpl(OnyxModule.class).isEnabled()) { + log.warn("TraineeStatusService unauthorized attempt, service disabled"); + throw new RuntimeException("Onyx plugin disabled"); + } + TestState testState = TestState.getState(status); log.info("updateStatus: " + testSessionId + " # " + studentIds + " # " + testState); diff --git a/src/main/java/org/olat/course/nodes/cl/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/nodes/cl/ui/_i18n/LocalStrings_en.properties index b4e906e64aa31ffab93792048bef03764b7bba37..8a61a79d76e83e3976e52889e8437dd42f441fba 100644 --- a/src/main/java/org/olat/course/nodes/cl/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/nodes/cl/ui/_i18n/LocalStrings_en.properties @@ -1,4 +1,4 @@ -#Tue Dec 16 09:04:07 CET 2014 +#Tue Feb 06 08:33:13 CET 2018 add.checkbox=Add checkbox assessment=Assessment assessment.checkbox.description=Edit per Checkbox\: Apply the checkbox filter to edit the same checkbox across all participants. @@ -19,6 +19,7 @@ column.header.homepage=Home page column.header.node.passed=Passed course element column.header.node.points=Score course element column.header.points=$\:box.points +column.header.seqnum=Sequence number comment.nocomment=$org.olat.course.nodes.ms\:comment.nocomment comment.title=$org.olat.course.nodes.ms\:comment.title condition.accessibility.title=Access @@ -49,10 +50,10 @@ down=Down edit.checkbox=Edit checkbox file=File filter.all=Show all -form.individual.assessment.docs=$org.olat.course.nodes.ms\:form.individual.assessment.docs form.error.date=A date must be indicated. form.error.scoreOutOfRange=$org.olat.course.assessment\:form.error.scoreOutOfRange form.error.wrongFloat=$org.olat.course.nodes.ms\:form.error.wrongFloat +form.individual.assessment.docs=$org.olat.course.nodes.ms\:form.individual.assessment.docs info.title=$org.olat.course.nodes.ms\:info.title label=Label label.achieved=Achieved diff --git a/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_en.properties index 0a8e8e7f86489c13239170d6b2803ea30766c634..74d209896ebe2d1b637360aaa47f755824b4833e 100644 --- a/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_en.properties @@ -1,11 +1,13 @@ -#Thu Dec 07 19:14:06 CET 2017 -allowRelativeLinks=Allow links in the entire storage folder. +#Tue Feb 06 08:34:50 CET 2018 Intro.self=Press the start button to begin with your self-test. Intro.surv=Press the start button to begin with your questionnaire. Intro.test=Press the start button to begin with your test. +allowRelativeLinks=Allow links in the entire storage folder. assessment.documents.title=Assessment documents attempts.nomoreattempts=There are no more attempts at your disposal. attempts.yourattempts=Number of attempts +block.dates.start=You will be able to start the test at <strong>{0}</strong>. +block.dates.start.end=The test can be started between the <strong>{0}</strong> and the <strong>{1}</strong>. button.export=Export results button.stats=$org.olat.ims.qti.statistics.ui\:menu.title changelog.title=Resource change log @@ -181,10 +183,11 @@ table.header.extra.time=Extra table.header.lastModified=Last modified table.header.results=Results time.limit.max=Time limit +time.limit.test.explain=The test takes a maximum of <strong>{0}</strong>. tool.delete.data=Reset all data tool.extra.time=Extend test time tool.pull=Pull running test -warning.assessment.mode=Test in process: +warning.assessment.mode=Test in process\: warning.assessment.mode.date={0} from {1} til {2} warning.test.with.essay=$org.olat.ims.qti.editor\:warning.test.with.essay warning.users.extra.time=You need to select a least one user which test can be prolonged. diff --git a/src/main/java/org/olat/modules/portfolio/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/portfolio/ui/_i18n/LocalStrings_en.properties index 756ad06db7f26cb28ddc85f5f78dd92894c4a681..957389b96404936fdf4ff9fbcc653c0360ef9ec2 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/portfolio/ui/_i18n/LocalStrings_en.properties @@ -1,4 +1,4 @@ -#Fri Aug 18 10:31:35 CEST 2017 +#Tue Feb 06 08:30:51 CET 2018 access=Access access.binder=The people below have access to the portfolio binder\: access.rights=Add access rights @@ -92,6 +92,8 @@ comment.several={0} comments comment.title=Comments comment.zero=Still no comments compare.evaluations=Evaluation +confirm.close.page=Do you really want to close this entry? The entry will be marked as closed for the trainee. +confirm.close.page.other.coaches=The following persons also have access to this entry\: confirmation=Confirmation create.binder=Create binder create.empty.binder=New empty binder @@ -347,16 +349,15 @@ status.inRevision=$\:status.in.revision status.not.started=not started status.published=published status.submitted=submitted -status.user.incoming=New -status.user.inProcess=In process status.user.done=Done +status.user.inProcess=In process +status.user.incoming=New summary=Summary summary.placeholder=Short summary about the content table.grading.failed.points=<span class\="o_state o_failed"><i class\="o_icon o_icon_failed"> </i> {0} Point(s)</span> table.grading.no=no grading yet table.grading.passed.points=<span class\="o_state o_passed"><i class\="o_icon o_icon_passed"> </i> {0} Point(s), passed</span> table.grading.points={0} Point(s) -table.header.mark=<i class\="o_icon o_icon_bookmark_header o_icon-lg" title\="Bookmark"> </i> table.header.categories=Categories table.header.change.status=Status table.header.closed=Closed @@ -370,6 +371,7 @@ table.header.grading=Grading table.header.inRevision=$\:status.in.revision table.header.key=ID table.header.lastUpdate=Last update +table.header.mark=<i class\="o_icon o_icon_bookmark_header o_icon-lg" title\="Bookmark"> </i> table.header.new=New table.header.numpages=\# Entries table.header.open=Start diff --git a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_en.properties index d5643ce491d4520c5c8e21b42a60da9f114cdd32..d10e9999b6c762a9d6a8a61e2754f1763a469bbb 100644 --- a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_en.properties @@ -1,4 +1,4 @@ -#Tue Apr 15 11:12:45 CEST 2014 +#Tue Feb 06 08:32:16 CET 2018 add=+ add.to.list=Add to list admin.menu.title=Question bank @@ -11,9 +11,9 @@ classification.taxonomic.path=Subject path classification.taxonomic.path.incl=Subjects classification.taxonomy.level=Subject classification.taxonomy.parents=Path +collection.add.to.source=Add questions to list "{0}" collection.creationDate=Created at collection.name=Name -collection.add.to.source=Add questions to list "{0}" commands=Question confirm.copy.button=Copy confirm.copy.editable=Allow other users to edit the question @@ -23,17 +23,18 @@ confirm.copy.title=Copy confirm.delete.button=Delete confirm.delete.confirmation=Delete all questions confirm.delete.confirmation.error=Please confirm +confirm.delete.message=Do you really want to permanently delete these questions? They can not be recovered. confirm.delete.questions=Questions +confirm.delete.source=Do you really want to delete this list? confirm.delete.title=Delete -confirm.delete.message=Do you really want to permanently delete these questions? They can not be recovered. confirm.unshare=Do your really want to remove this question "{0}"? convert.editable=Allow other users to edit the question +convert.format=Format convert.item=Convert -convert.item.not.possible=You haven't selected any question you can convert. convert.item.msg=Do you want to convert the {0} question(s) in the following format? +convert.item.not.possible=You haven't selected any question you can convert. convert.item.successful={0} question(s) successfully converted. convert.item.warning={0} was not converted. -convert.format=Format convert.qti21.hint=You will find information about the conversion from QTI 1.2 to QTI 2.1 in the manual convert.questions=Questions copy=Copy @@ -177,14 +178,16 @@ menu.pools.main=Catalog menu.pools.main.alt=Catalog menu.queries=Questions menu.queries.all=All questions -menu.queries.whithout.taxonomy.level=Without subject menu.queries.whithout.author=Without author +menu.queries.whithout.taxonomy.level=Without subject +menu.queries.without.author=Without author +menu.queries.without.taxonomy.level=Without subject menu.ratings=Ratings menu.review=Review menu.share=Public shares -metadatas=Metadata -metadata.show=Metadata metadata.hide=Metadata +metadata.show=Metadata +metadatas=Metadata my.competences=My subjects my.list=My lists my.share=My shares @@ -197,19 +200,23 @@ pool.name=Name pool.owners=Owners pool.public=Public presentation.title=Question bank -process.activate.not.reviewable.description=It is not possible to review questions in the format 'QTI 1.2'. Please previously convert the question to the format 'QTI 2.1'. +previous=Previous process.activate.locked=The question is opened by '{0}'. Therefore, you are not able to start the review process. +process.activate.not.reviewable.description=It is not possible to review questions in the format 'QTI 1.2'. Please previously convert the question to the format 'QTI 2.1'. process.activate.review=Review question process.activate.review.description=The question is in the status 'Review'. Please review the question carefully to technical correctness and with regards to content. Subsequently you have to push the button below to rate the question. process.activate.start.review=Start review process process.activate.start.review.description=You can now create and revise the question, until it has a sufficient quality. If the question is completely created, you have to start the review process by pushing the button below. Afterwards the question can not be edited anymore. process.comment=Comment process.confirm.endOfLife=If a question is end of life, the question can not be used anymore. Do you really want to set the end of life for the question "{0}"? -process.review=Review +process.endOfLife=End of life +process.final=Final +process.rating=Rating process.rating.button=Rate process.rating.description=Please rate the question. You are only once able to rate a question. After the rating the question is not in the list of the review questions anymore. process.rating.title=Review -process.rating=Rating +process.review=Review +process.revision=Revision process.start.review.button=$\:process.activate.start.review process.start.review.description=After the start of the review process all ratings are deleted and the question can not be edited anymore. Do you really want to start the review process for the question "{0}"? process.start.review.taxonomy.level=$\:general.taxonomy.level @@ -254,14 +261,14 @@ share.item.pools=Share with pools share.options=Do you want to allow other users to edit the imported question(s)? share.pool=Share with pool shared=Shared +sharing.pools.empty.table=This question is not shared in any pool. sharing.shares=Groups sharing.shares.empty.table=This question is not shared with any group. -sharing.pools.empty.table=This question is not shared in any pool. source.status.draft=$\:lifecycle.status.draft ({0}) +source.status.endOfLife=$\:lifecycle.status.endOfLife ({0}) +source.status.finalVersion=$\:lifecycle.status.finalVersion ({0}) source.status.review=$\:lifecycle.status.review ({0}) source.status.revised=$\:lifecycle.status.revised ({0}) -source.status.finalVersion=$\:lifecycle.status.finalVersion ({0}) -source.status.endOfLife=$\:lifecycle.status.endOfLife ({0}) technical=Technical technical.creation=Created technical.editor=Editor diff --git a/src/main/java/org/olat/modules/qpool/ui/admin/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/qpool/ui/admin/_i18n/LocalStrings_en.properties index 328e0bf87d833c3cbaffe55ab73f7e34a3dc0a48..103546671ff4ea8434c63041edc9cdd28eb0fa3f 100644 --- a/src/main/java/org/olat/modules/qpool/ui/admin/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/qpool/ui/admin/_i18n/LocalStrings_en.properties @@ -1,4 +1,4 @@ -#Wed Aug 28 17:36:55 CEST 2013 +#Tue Feb 06 08:32:43 CET 2018 admin.configuration.title=Question bank admin.levels.intro=Create those levels that apply to your organisations educational level. Examples for levels in an academic context could be elementary school, middle school, high school, bachelor, master. Within a corporation context, levels could be the following\: without apprenticeship, with vocational training, administration, middle management, CO admin.licenses.intro=You can create more license types if the default license types are not sufficient. Please note that the default licenses cannot be deleted. @@ -8,6 +8,7 @@ admin.review.process.decision.type=Decision method admin.review.process.title=Review process admin.studyfields.intro=Subjects allow for technical indexing the question items. It's organized as a hierarchical structure for modelling the potential degree programs. Select the "$org.olat.modules.taxonomy.ui\:add.taxonomy.level" in order to create a new subject, or select an existing one for editing purposes. admin.types.intro=Create more question types if the existing default types aren't sufficient. Please note that the default question types can not be deleted. +average.rating.for.final=Average rating for status "final" collections.enabled=Lists create.infos.page=Create infos page create.level=Create level @@ -15,12 +16,12 @@ create.license=Create license create.type=Create type delete.level=Delete delete.level.confirm=Do you really want to delete this level? -delete.taxonomyLevel=Delete -delete.taxonomyLevel.confirm=Do you really want to delete this subject "{0}"? -delete.qustions.without.author=Delete questions when author deleted -delete.qustions.without.author.info=When a user is deleted, he is removed as author from his question items. If this option is enabled and the user is the only author of the question item, the question item is deleted as well. delete.license=Delete delete.license.confirm=Do you really want to delete this license? +delete.qustions.without.author=Delete questions when author deleted +delete.qustions.without.author.info=When a user is deleted, he is removed as author from his question items. If this option is enabled and the user is the only author of the question item, the question item is deleted as well. +delete.taxonomyLevel=Delete +delete.taxonomyLevel.confirm=Do you really want to delete this subject "{0}"? delete.type=Delete delete.type.confirm=Do you really want to delete this type? edit.info.page=Edit infos page @@ -32,36 +33,35 @@ error.item.type.unique=A question type with this name already exists. final.visibility=Visibility of final questions final.visibility.manager=Manager final.visibility.manager.teacher=Manager, Teacher +import.create.subject=Create subject when importing item.license.deleted=License has been successfully deleted. item.license.notdeleted=License cannot be deleted, it is probably in use. item.type.deleted=Type has been successfully deleted. item.type.notdeleted=Type cannot be deleted, it is probably in use. -import.create.subject=Create subject when importing level.key=ID level.level=Level level.translation=Translation license.id=ID license.key=License +lower.limit=Lower limit for positive decision lower.limit.desc=The decision method "Lower limit" changes the status of a question to "$org.olat.modules.qpool.ui\:lifecycle.status.finalVersion", if the minimum number of ratings is reached and if all ratings are equal or higher then the lower limit. If a rating is lower then the lower limit, the question status this immediately changed to "$org.olat.modules.qpool.ui\:lifecycle.status.revised", even if the minimum number of ratings is not reached yet. lower.limit.provider.name=Lower limit -lower.limit=Lower limit for positive decision number.of.ratings=Number of ratings per question pool.manager.allowed=The pool manager is allowed to pool.manager.edit.matadata=see all questions and edit the metadata pool.manager.edit.status=change the status of a question -pool.manager.educational.context=edit the settings "$:\segment.educational.context" -pool.manager.licenses=edit the settings "$:\segment.licenses" -pool.manager.item.types=edit the settings "$:\segment.item.types" -pool.manager.pools=edit the settings "$:\segment.pools" -pool.manager.review.process=edit the settings "$:\segment.review.process" -pool.manager.taxonomy=edit the settings "$:\segment.taxonomy" +pool.manager.educational.context=edit the settings "$\:segment.educational.context" +pool.manager.item.types=edit the settings "$\:segment.item.types" +pool.manager.licenses=edit the settings "$\:segment.licenses" +pool.manager.pools=edit the settings "$\:segment.pools" +pool.manager.review.process=edit the settings "$\:segment.review.process" +pool.manager.taxonomy=edit the settings "$\:segment.taxonomy" pools.enabled=Pools reset.status=Reset all questions to state "draft". review.process.confirm.enable.button=Enable -review.process.confirm.enable.description=It is recommended to reset all questions the the question bank to the status "draft" to create a clean starting position for the introduction of the review process.<br\><br\>The resetting of the question states can not be undone! +review.process.confirm.enable.description=It is recommended to reset all questions the the question bank to the status "draft" to create a clean starting position for the introduction of the review process.<br><br>The resetting of the question states can not be undone\! review.process.confirm.enable.title=Enable review process review.process.enabled=Review process -shares.enabled=Groups segment.configuration=Question bank segment.educational.context=Levels segment.info.page=Infos page @@ -71,6 +71,7 @@ segment.pools=Pools segment.review.process=Review process segment.taxonomy=Subjects selected.taxonomy.tree=Taxonomy +shares.enabled=Groups taxonomy.all=All subjects taxonomy.competences=Subjects with competence "teach" or "manage" taxonomy.selectable=Selectable subjects diff --git a/src/main/java/org/olat/modules/taxonomy/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/taxonomy/ui/_i18n/LocalStrings_en.properties index e48fce6efaa5801c924d074d236b3e1317694b27..deb3aa8c70663f382ee6479de397328e59e4dd2d 100644 --- a/src/main/java/org/olat/modules/taxonomy/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/taxonomy/ui/_i18n/LocalStrings_en.properties @@ -1,4 +1,4 @@ -#Fri Dec 08 12:28:56 CET 2017 +#Tue Feb 06 08:32:56 CET 2018 QuestionItemImpl=Question actions=Actions add.competence.have=Add "$\:have" @@ -18,12 +18,12 @@ assign.type=Assign atleast.one.competence=You must select at least one competence you can edit. confirm.delete.level.type.sucessfull=The level type "{0}" was successfully deleted. confirm.deleted.level=The level "{0}" was successfully deleted. +confirm.merge.level=The level(s) "{0}" was sucessfully merged. confirm.removed.competence=The competence(s) was successfully removed. confirmation.delete.level=Do you really want to delete the level "{0}"? confirmation.delete.level.title=Delete level confirmation.delete.type=Do you really want to delete this level type "{0}"? confirmation.delete.type.title=Delete level type "{0}" -confirm.merge.level=The level(s) "{0}" was sucessfully merged. confirmation.remove.competence=Do you really want to remove the competence "{0}" for the level {1}? confirmation.remove.competence.title=Remove competence create.taxonomy=Create new taxonomy @@ -33,10 +33,10 @@ details.delete=Delete edit.competence.title=Edit competence "{1}" of "{0}" edit.competences=Edit competences edit.level.types=Edit types -error.delete.num=These taxonomy levels contains the following elements: -error.delete.num.relations=<strong>{0}</strong> references to learn objects -error.delete.num.competences=<strong>{0}</strong> competence relations +error.delete.num=These taxonomy levels contains the following elements\: error.delete.num.child.levels=<strong>{0}</strong> children taxonomy levels +error.delete.num.competences=<strong>{0}</strong> competence relations +error.delete.num.relations=<strong>{0}</strong> references to learn objects error.discontinuous.selection=Discontinous selection of taxonomy levels is not supported. error.found.no.allowed.sub.types=No level type was found which is compatible with the selection and the level types configuration. error.select.target.level=You must select a taxonomy level. @@ -101,6 +101,7 @@ table.taxonomy.level.type.empty=There isn't any level type available. If you wan target=Target target.can.read="$\:target" allowed to read taxonomy.admin.enabled=Enable taxonomy +taxonomy.competence.expiration=Expiration date taxonomy.competence.fullName=Name taxonomy.competence.type=Competence taxonomy.description=Description