From 81c3300c56b914b8ae2e8359ce602c4b6423b581 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Wed, 26 Jun 2013 11:03:15 +0200 Subject: [PATCH] OO-535: delete only possible in "My questions", wordings, feedback after question import as file --- .../core/_i18n/LocalStrings_en.properties | 1 + .../flexible/elements/FlexiTableElement.java | 12 ++++++++++ .../table/AbstractFlexiTableRenderer.java | 4 +++- .../elements/table/FlexiTableElementImpl.java | 11 +++++++++ .../olat/group/manager/BusinessGroupDAO.java | 4 ++++ .../olat/ims/qti/QTI12MetadataController.java | 2 +- .../olat/ims/qti/_content/qti_metadatas.html | 4 ++-- .../ims/qti/_i18n/LocalStrings_de.properties | 4 ++++ .../ims/qti/_i18n/LocalStrings_en.properties | 4 ++++ .../modules/qpool/ui/ImportController.java | 10 +++++++- .../ui/QuestionItemDetailsController.java | 9 ++++--- .../modules/qpool/ui/QuestionItemsSource.java | 2 ++ .../qpool/ui/QuestionListController.java | 6 +++-- .../ui/QuestionPoolMainEditorController.java | 1 + .../modules/qpool/ui/QuestionsController.java | 12 ++++++---- .../qpool/ui/_content/item_details.html | 4 +++- .../olat/modules/qpool/ui/_content/items.html | 4 +++- .../qpool/ui/_i18n/LocalStrings_de.properties | 24 +++++++++---------- .../qpool/ui/_i18n/LocalStrings_en.properties | 8 +++---- .../qpool/ui/admin/PoolsAdminController.java | 12 ++++++++-- .../QEducationalContextsAdminController.java | 2 +- .../ui/admin/QItemTypeEditController.java | 2 +- .../ui/admin/QItemTypesAdminController.java | 2 +- .../ui/admin/QLicensesAdminController.java | 2 +- .../ui/admin/_i18n/LocalStrings_de.properties | 17 ++++++------- .../datasource/CollectionOfItemsSource.java | 5 ++++ .../ui/datasource/DefaultItemsSource.java | 10 ++++++++ .../ui/datasource/SharedItemsSource.java | 5 ++++ .../ui/metadata/MetadatasController.java | 4 ++++ .../qpool/ui/metadata/SharingController.java | 3 +++ 30 files changed, 142 insertions(+), 48 deletions(-) diff --git a/src/main/java/org/olat/core/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/core/_i18n/LocalStrings_en.properties index 861c326dcff..786300fd276 100644 --- a/src/main/java/org/olat/core/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/core/_i18n/LocalStrings_en.properties @@ -15,6 +15,7 @@ error.header=Error error.jpbwrapper.renderfailed=This component cannot be displayed anymore. Please start component again. error.noformpostdata=Attention\! Due to problems concerning your browser some data could not be transferred. Please use the "Back" button and try again. expand=Expand +extsearch=Advanced search finish=Finish form.checkall=Select all form.date.datevalid=Date must be valid diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java b/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java index 16bf5e8fc7d..5f2ad6b6421 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java @@ -59,6 +59,18 @@ public interface FlexiTableElement extends FormItem { */ public void setMultiSelect(boolean enable); + /** + * + * @return true if the user can customize the columns of the table + */ + public boolean isCustomizeColumns(); + + /** + * Enable customizing of columns + * @param customizeColumns + */ + public void setCustomizeColumns(boolean customizeColumns); + /** * @return The CSS selector used to calculate the height of the table * (datatables variant only) diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/AbstractFlexiTableRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/AbstractFlexiTableRenderer.java index f729bd9b15f..1007d22045e 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/AbstractFlexiTableRenderer.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/AbstractFlexiTableRenderer.java @@ -78,7 +78,9 @@ public abstract class AbstractFlexiTableRenderer implements ComponentRenderer { if(ftE.getExtendedSearchButton() != null) { renderFormItem(renderer, sb, ftE.getExtendedSearchButton(), ubu, translator, renderResult, args); } - renderFormItem(renderer, sb, ftE.getCustomButton(), ubu, translator, renderResult, args); + if(ftE.getCustomButton() != null && ftE.isCustomizeColumns()) { + renderFormItem(renderer, sb, ftE.getCustomButton(), ubu, translator, renderResult, args); + } } protected void renderFormItem(Renderer renderer, StringOutput sb, FormItem item, URLBuilder ubu, Translator translator, diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java index d4f0210ca67..8175849286c 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java @@ -72,6 +72,7 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle //settings private boolean multiSelect; private FlexiTableRendererType rendererType = FlexiTableRendererType.classic; + private boolean customizeColumns = true; private int rowCount = -1; @@ -178,6 +179,16 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle public void setMultiSelect(boolean multiSelect) { this.multiSelect = multiSelect; } + + + + public boolean isCustomizeColumns() { + return customizeColumns; + } + + public void setCustomizeColumns(boolean customizeColumns) { + this.customizeColumns = customizeColumns; + } public String getWrapperSelector() { return wrapperSelector; diff --git a/src/main/java/org/olat/group/manager/BusinessGroupDAO.java b/src/main/java/org/olat/group/manager/BusinessGroupDAO.java index ee090d9f642..8e714e06efa 100644 --- a/src/main/java/org/olat/group/manager/BusinessGroupDAO.java +++ b/src/main/java/org/olat/group/manager/BusinessGroupDAO.java @@ -653,6 +653,10 @@ public class BusinessGroupDAO { public List<BusinessGroupView> findBusinessGroupWithAuthorConnection(Identity author) { StringBuilder sb = new StringBuilder(); sb.append("select bgi from ").append(BusinessGroupViewImpl.class.getName()).append(" as bgi ") + .append("inner join fetch bgi.ownerGroup ownerGroup ") + .append("inner join fetch bgi.partipiciantGroup participantGroup ") + .append("inner join fetch bgi.waitingGroup waitingGroup ") + .append("inner join fetch bgi.resource bgResource ") .append("where bgi.key in (") .append(" select rel.group.key from ").append(BGResourceRelation.class.getName()).append(" as rel ") .append(" where rel.resource.key in (") diff --git a/src/main/java/org/olat/ims/qti/QTI12MetadataController.java b/src/main/java/org/olat/ims/qti/QTI12MetadataController.java index 2ec074aeae0..a7d3702bb27 100644 --- a/src/main/java/org/olat/ims/qti/QTI12MetadataController.java +++ b/src/main/java/org/olat/ims/qti/QTI12MetadataController.java @@ -65,7 +65,7 @@ public class QTI12MetadataController extends FormBasicController { leftSettingsCont.setRootForm(mainForm); formLayout.add("leftSettings", leftSettingsCont); - String shuffleStr = Boolean.toString(question.isShuffle()); + String shuffleStr = translate(question.isShuffle() ? "editor.true" : "editor.false"); uifactory.addStaticTextElement("form.imd.shuffle", shuffleStr, leftSettingsCont); String duration = ""; diff --git a/src/main/java/org/olat/ims/qti/_content/qti_metadatas.html b/src/main/java/org/olat/ims/qti/_content/qti_metadatas.html index 420ebb195d9..938d8797a7a 100644 --- a/src/main/java/org/olat/ims/qti/_content/qti_metadatas.html +++ b/src/main/java/org/olat/ims/qti/_content/qti_metadatas.html @@ -1,6 +1,6 @@ #if($r.available("leftSettings") || $r.available("rightSettings")) <fieldset> - <legend>Settings</legend> + <legend>$r.translate("editor.settings")</legend> <div class="b_clearfix"> <div class="b_c50l"> <div class="b_subcl"> @@ -17,7 +17,7 @@ #end #if($r.available("leftFeedback") || $r.available("rightFeedback")) <fieldset> - <legend>Feedbacks</legend> + <legend>$r.translate("editor.feedback")</legend> <div class="b_clearfix"> <div class="b_c50l"> <div class="b_subcl"> diff --git a/src/main/java/org/olat/ims/qti/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/ims/qti/_i18n/LocalStrings_de.properties index cf176e01dbb..e13cc040ac1 100644 --- a/src/main/java/org/olat/ims/qti/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/ims/qti/_i18n/LocalStrings_de.properties @@ -34,6 +34,10 @@ notReleased=Nicht abgegeben open=Offen date=Datum dur=Dauer +editor.true=Ja +editor.false=Nein +editor.settings=Einstellungen +editor.feedback=Feedbacks editor.newquestion=Neue Frage editor.newquestiontext=Neue Frage editor.newresponsetext=Neue Antwort diff --git a/src/main/java/org/olat/ims/qti/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/ims/qti/_i18n/LocalStrings_en.properties index f1ee9af447f..c9c7993e7da 100644 --- a/src/main/java/org/olat/ims/qti/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/ims/qti/_i18n/LocalStrings_en.properties @@ -35,6 +35,10 @@ open=Open date=Date days=Days dur=Duration +editor.settings=Settings +editor.feedback=Feedbacks +editor.true=Yes +editor.false=No editor.newquestion=New question editor.newquestiontext=New question editor.newresponsetext=New answer diff --git a/src/main/java/org/olat/modules/qpool/ui/ImportController.java b/src/main/java/org/olat/modules/qpool/ui/ImportController.java index 7596affff35..3e59b338869 100644 --- a/src/main/java/org/olat/modules/qpool/ui/ImportController.java +++ b/src/main/java/org/olat/modules/qpool/ui/ImportController.java @@ -20,6 +20,7 @@ package org.olat.modules.qpool.ui; import java.io.File; +import java.util.List; import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; @@ -31,6 +32,7 @@ import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.modules.qpool.QPoolService; +import org.olat.modules.qpool.QuestionItem; /** * @@ -85,8 +87,14 @@ public class ImportController extends FormBasicController { protected void formOK(UserRequest ureq) { String filename = fileEl.getUploadFileName(); File file = fileEl.getUploadFile(); - qpoolservice.importItems(getIdentity(), getLocale(), filename, file); + List<QuestionItem> importItems = qpoolservice.importItems(getIdentity(), getLocale(), filename, file); fireEvent(ureq, Event.DONE_EVENT); + + if(importItems.isEmpty()) { + showWarning("import.failed"); + } else { + showInfo("import.success", Integer.toString(importItems.size())); + } } @Override diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionItemDetailsController.java b/src/main/java/org/olat/modules/qpool/ui/QuestionItemDetailsController.java index 1e73cae4692..9e4aa2a2816 100644 --- a/src/main/java/org/olat/modules/qpool/ui/QuestionItemDetailsController.java +++ b/src/main/java/org/olat/modules/qpool/ui/QuestionItemDetailsController.java @@ -80,7 +80,7 @@ public class QuestionItemDetailsController extends BasicController implements St private final QuestionPoolModule poolModule; private final QPoolService qpoolService; - public QuestionItemDetailsController(UserRequest ureq, WindowControl wControl, QuestionItem item, boolean editable) { + public QuestionItemDetailsController(UserRequest ureq, WindowControl wControl, QuestionItem item, boolean editable, boolean deletable) { super(ureq, wControl); poolModule = CoreSpringFactory.getImpl(QuestionPoolModule.class); @@ -112,8 +112,10 @@ public class QuestionItemDetailsController extends BasicController implements St shareItem = LinkFactory.createButton("share.item", mainVC, this); copyItem = LinkFactory.createButton("copy", mainVC, this); - deleteItem = LinkFactory.createButton("delete.item", mainVC, this); - deleteItem.setVisible(canEdit); + if(deletable) { + deleteItem = LinkFactory.createButton("delete.item", mainVC, this); + deleteItem.setVisible(canEdit); + } exportItem = LinkFactory.createButton("export.item", mainVC, this); mainVC.put("type_specifics", previewCtrl.getInitialComponent()); @@ -179,6 +181,7 @@ public class QuestionItemDetailsController extends BasicController implements St if(groups.size() > 0) { QuestionItem item = (QuestionItem)((SelectBusinessGroupController)source).getUserObject(); doShareItems(ureq, item, groups); + metadatasCtrl.updateShares(); } } cmc.deactivate(); diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionItemsSource.java b/src/main/java/org/olat/modules/qpool/ui/QuestionItemsSource.java index 99166952cf4..e263c503387 100644 --- a/src/main/java/org/olat/modules/qpool/ui/QuestionItemsSource.java +++ b/src/main/java/org/olat/modules/qpool/ui/QuestionItemsSource.java @@ -44,6 +44,8 @@ public interface QuestionItemsSource { public boolean isRemoveEnabled(); + public boolean isDeleteEnabled(); + public void removeFromSource(List<QuestionItemShort> items); public int getNumOfItems(); diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java b/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java index f01f7713d2d..f49168663de 100644 --- a/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java +++ b/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java @@ -127,7 +127,9 @@ public class QuestionListController extends AbstractItemListController implement copyItem = uifactory.addFormLink("copy", formLayout, Link.BUTTON); importItem = uifactory.addFormLink("import.item", formLayout, Link.BUTTON); authorItem = uifactory.addFormLink("author.item", formLayout, Link.BUTTON); - deleteItem = uifactory.addFormLink("delete.item", formLayout, Link.BUTTON); + if(getSource().isDeleteEnabled()) { + deleteItem = uifactory.addFormLink("delete.item", formLayout, Link.BUTTON); + } bulkChange = uifactory.addFormLink("bulk.change", formLayout, Link.BUTTON); } @@ -666,7 +668,7 @@ public class QuestionListController extends AbstractItemListController implement removeAsListenerAndDispose(currentDetailsCtrl); removeAsListenerAndDispose(currentMainDetailsCtrl); - currentDetailsCtrl = new QuestionItemDetailsController(ureq, getWindowControl(), item, editable); + currentDetailsCtrl = new QuestionItemDetailsController(ureq, getWindowControl(), item, editable, getSource().isDeleteEnabled()); currentDetailsCtrl.setStackedController(stackPanel); listenTo(currentDetailsCtrl); currentMainDetailsCtrl = new LayoutMain3ColsController(ureq, getWindowControl(), currentDetailsCtrl); diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java b/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java index bd734c919ed..3c7614ddd5c 100644 --- a/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java +++ b/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java @@ -350,6 +350,7 @@ public class QuestionPoolMainEditorController extends BasicController implements private void doSelectMyQuestions(UserRequest ureq, List<ContextEntry> entries, StateEntry state) { DefaultItemsSource source = new DefaultItemsSource(getIdentity(), ureq.getUserSession().getRoles(), "My"); source.getDefaultParams().setAuthor(getIdentity()); + source.setDeleteEnabled(true); if(myQuestionsCtrl == null) { WindowControl swControl = addToHistory(ureq, OresHelper.createOLATResourceableType("My"), null); myQuestionsCtrl = new QuestionsController(ureq, swControl, source, "my"); diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionsController.java b/src/main/java/org/olat/modules/qpool/ui/QuestionsController.java index cfd47305a6b..814a3997199 100644 --- a/src/main/java/org/olat/modules/qpool/ui/QuestionsController.java +++ b/src/main/java/org/olat/modules/qpool/ui/QuestionsController.java @@ -91,8 +91,10 @@ public class QuestionsController extends BasicController implements Activateable mainVC.put("preview", previewCtrl.getInitialComponent()); mainVC.contextPut("tableId", listCtrl.getTableFormDispatchId()); - deleteItem = LinkFactory.createButton("delete.item", mainVC, this); - deleteItem.setEnabled(false); + if(source.isDeleteEnabled()) { + deleteItem = LinkFactory.createButton("delete.item", mainVC, this); + deleteItem.setEnabled(false); + } selectItem = LinkFactory.createButton("select.item", mainVC, this); selectItem.setEnabled(false); @@ -199,13 +201,15 @@ public class QuestionsController extends BasicController implements Activateable } private void doUpdateDetails(UserRequest ureq, QuestionItemView itemView) { - deleteItem.setVisible(itemView.isEditable()); + if(deleteItem != null) { + deleteItem.setVisible(itemView.isEditable()); + deleteItem.setEnabled(true); + } QuestionItem item = qpoolService.loadItemById(itemView.getKey()); detailsCtrl.updateItem(item, itemView.isEditable()); previewCtrl.updateItem(ureq, item); selectItem.setEnabled(true); - deleteItem.setEnabled(true); } private void doDelete(UserRequest ureq, QuestionItemShort item) { diff --git a/src/main/java/org/olat/modules/qpool/ui/_content/item_details.html b/src/main/java/org/olat/modules/qpool/ui/_content/item_details.html index a78c63878c9..80776906c29 100644 --- a/src/main/java/org/olat/modules/qpool/ui/_content/item_details.html +++ b/src/main/java/org/olat/modules/qpool/ui/_content/item_details.html @@ -13,7 +13,9 @@ $r.render("metadatas") $r.render("export.item") $r.render("share.item") $r.render("copy") - $r.render("delete.item") + #if($r.available("delete.item")) + $r.render("delete.item") + #end </div> </div> $r.render("comments") \ No newline at end of file diff --git a/src/main/java/org/olat/modules/qpool/ui/_content/items.html b/src/main/java/org/olat/modules/qpool/ui/_content/items.html index a0752c58cd1..49f6794ac9c 100644 --- a/src/main/java/org/olat/modules/qpool/ui/_content/items.html +++ b/src/main/java/org/olat/modules/qpool/ui/_content/items.html @@ -14,7 +14,9 @@ <div id="qbuttons" class="b_clearfix o_qpool_button_bar_box"> <div class="o_qpool_button_bar"> $r.render("select.item") - $r.render("delete.item") + #if($r.available("delete.item")) + $r.render("delete.item") + #end </div> </div> <script type="text/javascript"> diff --git a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties index 1e9ef91e81d..4eea335a393 100644 --- a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties @@ -7,8 +7,8 @@ remove=- topnav.qpool=Q-Pool topnav.qpool.alt=Question pools create.collection.description=Geben Sie zu Ihrer Liste einen Namen. -bulk.change=Metadaten ändern -bulk.change.description=Hier k\u00F6nnen Sie in 1 Schritt mehrere Attributen von mehreren Fragen ändern. +bulk.change=Metadaten \u00E4ndern +bulk.change.description=Hier k\u00F6nnen Sie in 1 Schritt mehrere Attributen von mehreren Fragen \u00E4ndern. collection.name=Name collection.creationDate=Erstellt am copy=Kopieren @@ -17,8 +17,8 @@ delete.item=L\u00F6schen delete.collection=Liste l\u00F6schen details=Detailansicht rename.collection=Liste umbenennen -next=Weiter -previous=Vorherig +next=N\u00E4chste +previous=Vorherige confirm.delete=Wollen Sie wirklich diese Frage l\u00F6schen? Sie wird von allen Gruppen, allen Pools und allen Listen gel\u00F6scht. confirm.delete.source=Wollen Sie wirklich diese Liste l\u00F6schen? confirm.unshare=Wollen Sie wirklich diese Frage von "{0}" entfernen? @@ -27,10 +27,10 @@ menu.admin=Administration menu.admin.alt=Administration menu.admin.studyfields=Fachbereich menu.admin.studyfields.alt=Fachbereich -menu.admin.types=Typ -menu.admin.types.alt=Typ -menu.admin.levels=Level -menu.admin.levels.alt=Level +menu.admin.types=Fragetyp +menu.admin.types.alt=Fragetyp +menu.admin.levels=Stufe +menu.admin.levels.alt=Stufe menu.admin.licenses=Lizenz menu.admin.licenses.alt=Lizenz menu.database=Fragendatenbank @@ -72,7 +72,7 @@ question.difficulty=Itemschwierigkeit question.difficulty.example=Wert zwischen 0.0 und 1.0, zum Beispiel 0.3 question.stdevDifficulty=Standardabweichung Itemschwierigkeit question.stdevDifficulty.example=$\:question.difficulty.example -question.differentiation=Trennschärfe +question.differentiation=Trennsch\u00E4rfe question.differentiation.example=Wert zwischen -1.0 und 1.0, zum Beispiel 0.1 question.numOfAnswerAlternatives=Anzahl Antwortalternativen question.usage=Verwendung in Tests @@ -116,12 +116,12 @@ item.copied={0} Frage wurde kopiert. pool.key=ID pool.name=Name pool.public=\u00D6ffentlich -pool.owners=Owners +pool.owners=Besitzer create.pool=Pool erstellen delete.pool=Pool l\u00F6schen delete.pool.confirm=Wollen Sie wirklich diesen Pool "{0}" l\u00F6schen? edit.pool=Pool editieren -error.select.one=Sie müssen mindestens eine Frage wählen. +error.select.one=Sie müssen mindestens eine Frage w\u00E4hlen. inWork=In Bearbeitung inReview=In Review used=Verwendet @@ -138,8 +138,6 @@ item.type.kprim=KPrim item.type.essay=Essay item.type.unkown=Unbekannt author.item=Autorenrechte -author.choose.title=Autoren auswählen -author.confirm.title=Bestätigen share.item=Freigeben unshare.item=Entfernen share.pool=Zu Pool freigeben 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 bad4a20f8a1..a868b0d514e 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 @@ -75,7 +75,7 @@ question.stdevDifficulty.example=$\:question.difficulty.example question.differentiation=Differentiation question.differentiation.example=Value between -1.0 and 1.0. Example: 0.1 question.numOfAnswerAlternatives=Number of alternative responses -question.usage=Usage in tests +question.usage=Used in tests question.assessmentType=Test type question.assessmentType.summative=Summative question.assessmentType.formative=Formative @@ -127,7 +127,7 @@ inWork=In work inReview=In review used=Used shared=Shared -mark=Bookmarked +mark=Bookmark rights=Rights applications=Applications technics=Technical @@ -137,9 +137,7 @@ item.type.sc=Single-Choice item.type.kprim=KPrim item.type.essay=Essay item.type.unkown=Unkown -author.item=Autorenrechte -author.choose.title=Autoren auswählen -author.confirm.title=Bestätigen +author.item=Author rights share.item=Share unshare.item=Remove share.pool=Share with pool diff --git a/src/main/java/org/olat/modules/qpool/ui/admin/PoolsAdminController.java b/src/main/java/org/olat/modules/qpool/ui/admin/PoolsAdminController.java index 98a21d00793..d1c51e4501f 100644 --- a/src/main/java/org/olat/modules/qpool/ui/admin/PoolsAdminController.java +++ b/src/main/java/org/olat/modules/qpool/ui/admin/PoolsAdminController.java @@ -35,7 +35,10 @@ import org.olat.core.gui.components.form.flexible.elements.FlexiTableElement; import org.olat.core.gui.components.form.flexible.elements.FormLink; import org.olat.core.gui.components.form.flexible.impl.FormBasicController; import org.olat.core.gui.components.form.flexible.impl.FormEvent; +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; +import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiColumnModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModelFactory; @@ -99,7 +102,12 @@ public class PoolsAdminController extends FormBasicController { //add the table FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, Cols.id.i18nKey(), Cols.id.ordinal(), true, "key")); - columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.publicPool.i18nKey(), Cols.publicPool.ordinal(), true, "name")); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, Cols.publicPool.i18nKey(), Cols.publicPool.ordinal(), + true, "publicPool", FlexiColumnModel.ALIGNMENT_LEFT, + new BooleanCellRenderer( + new CSSIconFlexiCellRenderer("o_public"), + new CSSIconFlexiCellRenderer("o_private")) + )); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.name.i18nKey(), Cols.name.ordinal(), true, "name")); columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("edit", translate("edit"), "edit-pool")); columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("pool.owners", translate("pool.owners"), "owners-pool")); @@ -220,7 +228,7 @@ public class PoolsAdminController extends FormBasicController { listenTo(groupCtrl); cmc = new CloseableModalController(getWindowControl(), translate("close"), - groupCtrl.getInitialComponent(), true, translate("manage.owners")); + groupCtrl.getInitialComponent(), true, translate("pool.owners")); cmc.activate(); listenTo(cmc); } diff --git a/src/main/java/org/olat/modules/qpool/ui/admin/QEducationalContextsAdminController.java b/src/main/java/org/olat/modules/qpool/ui/admin/QEducationalContextsAdminController.java index d3c1491a58b..d2b1e9fa4b1 100644 --- a/src/main/java/org/olat/modules/qpool/ui/admin/QEducationalContextsAdminController.java +++ b/src/main/java/org/olat/modules/qpool/ui/admin/QEducationalContextsAdminController.java @@ -218,7 +218,7 @@ public class QEducationalContextsAdminController extends FormBasicController { listenTo(editCtrl); cmc = new CloseableModalController(getWindowControl(), translate("close"), - editCtrl.getInitialComponent(), true, translate("edit.pool")); + editCtrl.getInitialComponent(), true, translate("create.level")); cmc.activate(); listenTo(cmc); } diff --git a/src/main/java/org/olat/modules/qpool/ui/admin/QItemTypeEditController.java b/src/main/java/org/olat/modules/qpool/ui/admin/QItemTypeEditController.java index fea6e8ce785..ab4bca387b2 100644 --- a/src/main/java/org/olat/modules/qpool/ui/admin/QItemTypeEditController.java +++ b/src/main/java/org/olat/modules/qpool/ui/admin/QItemTypeEditController.java @@ -65,7 +65,7 @@ public class QItemTypeEditController extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { String name = itemType == null ? "" : itemType.getType(); - nameEl = uifactory.addTextElement("type.type", "type.type", 128, name, formLayout); + nameEl = uifactory.addTextElement("type.type", "type.type.alt", 128, name, formLayout); FormLayoutContainer buttonsCont = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); buttonsCont.setRootForm(mainForm); diff --git a/src/main/java/org/olat/modules/qpool/ui/admin/QItemTypesAdminController.java b/src/main/java/org/olat/modules/qpool/ui/admin/QItemTypesAdminController.java index 8eb067cd70a..4206a2b0b54 100644 --- a/src/main/java/org/olat/modules/qpool/ui/admin/QItemTypesAdminController.java +++ b/src/main/java/org/olat/modules/qpool/ui/admin/QItemTypesAdminController.java @@ -219,7 +219,7 @@ public class QItemTypesAdminController extends FormBasicController { listenTo(editCtrl); cmc = new CloseableModalController(getWindowControl(), translate("close"), - editCtrl.getInitialComponent(), true, translate("edit.pool")); + editCtrl.getInitialComponent(), true, translate("create.type")); cmc.activate(); listenTo(cmc); } diff --git a/src/main/java/org/olat/modules/qpool/ui/admin/QLicensesAdminController.java b/src/main/java/org/olat/modules/qpool/ui/admin/QLicensesAdminController.java index 7a9c696bcc9..ef181f33c09 100644 --- a/src/main/java/org/olat/modules/qpool/ui/admin/QLicensesAdminController.java +++ b/src/main/java/org/olat/modules/qpool/ui/admin/QLicensesAdminController.java @@ -176,7 +176,7 @@ public class QLicensesAdminController extends FormBasicController { listenTo(editCtrl); cmc = new CloseableModalController(getWindowControl(), translate("close"), - editCtrl.getInitialComponent(), true, translate("edit.pool")); + editCtrl.getInitialComponent(), true, translate("create.license")); cmc.activate(); listenTo(cmc); } diff --git a/src/main/java/org/olat/modules/qpool/ui/admin/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/qpool/ui/admin/_i18n/LocalStrings_de.properties index 41b56645f6a..262824aaf9a 100644 --- a/src/main/java/org/olat/modules/qpool/ui/admin/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/qpool/ui/admin/_i18n/LocalStrings_de.properties @@ -1,24 +1,25 @@ #Mon Mar 02 09:54:04 CET 2009 level.key=ID -level.level=Level -level.translation=Ubersetzung +level.level=Stufe +level.translation=\u00DCbersetzung type.key=ID type.type=Typ -type.translation=Ubersetzung +type.type.alt=Fragetyp +type.translation=\u00DCbersetzung license.id=ID license.key=Lizenz delete.type=Löschen delete.type.confirm=Wollen Sie wirklich dieser Typ löschen? delete.level=Löschen -delete.level.confirm=Wollen Sie wirklich dieser Level löschen? +delete.level.confirm=Wollen Sie wirklich dieser Stufe löschen? delete.license=Löschen delete.license.confirm=Wollen Sie wirklich dieser Lizenz löschen? -create.level=Level erstellen +create.level=Stufe erstellen create.license=Lizenz erstellen -create.type=Typ erstellen +create.type=Fragetyp erstellen add.taxonomyLevel=Fachbereich erstellen edit.taxonomyLevel=Fachbereich bearbeiten educational.context.deleted=Fachbereich wurde erfolgreich gelöscht educational.context.notdeleted=Fachbereich wurde nicht gelöscht, probably in use -item.type.deleted=Typ wurde erfolgreich gelöscht -item.type.notdeleted=Typ wurde nicht gelöscht, probably in use \ No newline at end of file +item.type.deleted=Fragetyp wurde erfolgreich gelöscht +item.type.notdeleted=Fragetyp wurde nicht gelöscht, probably in use \ No newline at end of file diff --git a/src/main/java/org/olat/modules/qpool/ui/datasource/CollectionOfItemsSource.java b/src/main/java/org/olat/modules/qpool/ui/datasource/CollectionOfItemsSource.java index a0238a783c4..6d8a155b801 100644 --- a/src/main/java/org/olat/modules/qpool/ui/datasource/CollectionOfItemsSource.java +++ b/src/main/java/org/olat/modules/qpool/ui/datasource/CollectionOfItemsSource.java @@ -76,6 +76,11 @@ public class CollectionOfItemsSource implements QuestionItemsSource { return true; } + @Override + public boolean isDeleteEnabled() { + return false; + } + @Override public void removeFromSource(List<QuestionItemShort> items) { qpoolService.removeItemsFromCollection(items, collection); diff --git a/src/main/java/org/olat/modules/qpool/ui/datasource/DefaultItemsSource.java b/src/main/java/org/olat/modules/qpool/ui/datasource/DefaultItemsSource.java index 40d8cfa8935..2fe902bce88 100644 --- a/src/main/java/org/olat/modules/qpool/ui/datasource/DefaultItemsSource.java +++ b/src/main/java/org/olat/modules/qpool/ui/datasource/DefaultItemsSource.java @@ -45,6 +45,7 @@ import org.olat.modules.qpool.ui.QuestionItemsSource; public class DefaultItemsSource implements QuestionItemsSource { private boolean removeEnabled = false; + private boolean deleteEnabled = false; private final String name; private final QPoolService qpoolService; private final SearchQuestionItemParams defaultParams; @@ -86,6 +87,15 @@ public class DefaultItemsSource implements QuestionItemsSource { this.removeEnabled = removeEnabled; } + @Override + public boolean isDeleteEnabled() { + return deleteEnabled; + } + + public void setDeleteEnabled(boolean deleteEnabled) { + this.deleteEnabled = deleteEnabled; + } + @Override public void removeFromSource(List<QuestionItemShort> items) { // diff --git a/src/main/java/org/olat/modules/qpool/ui/datasource/SharedItemsSource.java b/src/main/java/org/olat/modules/qpool/ui/datasource/SharedItemsSource.java index ffe73ecc5d2..b665bb66b00 100644 --- a/src/main/java/org/olat/modules/qpool/ui/datasource/SharedItemsSource.java +++ b/src/main/java/org/olat/modules/qpool/ui/datasource/SharedItemsSource.java @@ -77,6 +77,11 @@ public class SharedItemsSource implements QuestionItemsSource { return roles.isOLATAdmin() || roles.isPoolAdmin() || admin; } + @Override + public boolean isDeleteEnabled() { + return false; + } + @Override public void removeFromSource(List<QuestionItemShort> items) { qpoolService.removeItemsFromResource(items, resource); diff --git a/src/main/java/org/olat/modules/qpool/ui/metadata/MetadatasController.java b/src/main/java/org/olat/modules/qpool/ui/metadata/MetadatasController.java index 810d1122e97..c085d93f36f 100644 --- a/src/main/java/org/olat/modules/qpool/ui/metadata/MetadatasController.java +++ b/src/main/java/org/olat/modules/qpool/ui/metadata/MetadatasController.java @@ -236,6 +236,10 @@ public class MetadatasController extends BasicController { mainVC.put("details_rights", rightsCtrl.getInitialComponent()); } + public void updateShares() { + sharingCtrl.setItem(getItem()); + } + public QuestionItem updateVersionNumber() { if(item instanceof QuestionItemImpl && StringHelper.containsNonWhitespace(item.getItemVersion())) { String version = item.getItemVersion(); diff --git a/src/main/java/org/olat/modules/qpool/ui/metadata/SharingController.java b/src/main/java/org/olat/modules/qpool/ui/metadata/SharingController.java index 494938d3a67..f3df3d265cd 100644 --- a/src/main/java/org/olat/modules/qpool/ui/metadata/SharingController.java +++ b/src/main/java/org/olat/modules/qpool/ui/metadata/SharingController.java @@ -84,12 +84,14 @@ public class SharingController extends FormBasicController { poolInfosColumnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("pool.name", 1)); poolInfosModel = new PoolInfosDataModel(poolInfosColumnsModel); poolInfosTable = uifactory.addTableElement(ureq, getWindowControl(), "pools", poolInfosModel, getTranslator(), formLayout); + poolInfosTable.setCustomizeColumns(false); //list of authors FlexiTableColumnModel authorsColumnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); authorsColumnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("sharing.author.name", 0)); authorsModel = new AuthorDataModel(authorsColumnsModel); authorsTable = uifactory.addTableElement(ureq, getWindowControl(), "authors", authorsModel, getTranslator(), formLayout); + authorsTable.setCustomizeColumns(false); //list of groups FlexiTableColumnModel sharesColumnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); @@ -101,6 +103,7 @@ public class SharingController extends FormBasicController { sharesColumnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("pool.name", 1)); sharesModel = new SharesDataModel(poolInfosColumnsModel); sharesTable = uifactory.addTableElement(ureq, getWindowControl(), "shares", sharesModel, getTranslator(), formLayout); + sharesTable.setCustomizeColumns(false); } @Override -- GitLab