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 861c326dcff92afab68b2590b152a674dc063e1e..786300fd276156d281e83eff6a92aeca95e75e6c 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 16bf5e8fc7ddb0885710d2fd1be9e6f072adf53d..5f2ad6b6421f79bb4ee2e674077d81008fc0acbb 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 f729bd9b15f8cd06b03fc1f2dba0541dc1648a14..1007d22045e45a4254559d9b498d93980b6ead75 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 d4f0210ca673213fe40588a78ee53ee749719cf3..8175849286c6e21c8211cc13e2c6bd4a7f45aead 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 ee090d9f642df043cbc72663ee959e97b0781b53..8e714e06efac43ef2bbd97179bda92c2b8b04260 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 2ec074aeae06f8ac945b94f776f34dc0ad0f8a9e..a7d3702bb275b68ab594881850971f5419c392b1 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 420ebb195d994ba1fad6c31efb02c9a46f783c9e..938d8797a7ad8e16ba908111e01b9409ec338832 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 cf176e01dbb88ca0ff0f2ca6dc01e964a707a762..e13cc040ac1604e4f8ab85e0a294dcdb245d487e 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 f1ee9af447f5117de26a81587dd29c4f07b9e79c..c9c7993e7da553c4c116cce8e7e797ea14d2042f 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 7596affff35c8226bf58ff5fa4d441a80f274f84..3e59b33886976c25dff12df1726b6fffe3e98b06 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 1e73cae4692e3301244a97acbf1cb9f2637dd4eb..9e4aa2a281622bb4770f085389439803f8d1185d 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 99166952cf4a734d0db744290cc54bf7c2e166f6..e263c50338770128c16edcd0fe3809a6800d9772 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 f01f7713d2dc721c62c8fb1fa4e3e5b862cedec1..f49168663de9755abc90115f14718654a84f5f47 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 bd734c919ed7756e6306bf95339210693fb66508..3c7614ddd5c9b3e7c443fe0247e0a6c7231fa331 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 cfd47305a6baef9bdc07be9900ce40c0cda66474..814a399719903119d2ac6aee6be86456edafdacb 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 a78c63878c9e06f739d2810a5976f1fe977a51dc..80776906c29a8e3c2476ac9b988e862f4b8ebd09 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 a0752c58cd1f6db441342a9a0c80653fbbcfbf8f..49f6794ac9cbcfe9eb505e40f01f3ac9000c034e 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 1e9ef91e81dccbcd96af92e580aff658fb7fb666..4eea335a3939a8f46bf7a2648521dc5b0aacee86 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 bad4a20f8a1cbd56dfbf67264c6901a46ae1b47b..a868b0d514e25d21527babfb25a188fd28e31e91 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 98a21d007934b63c3c0a78db9b9a3b90cd5735cd..d1c51e4501f41673f57ce63af26476217a1efab1 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 d3c1491a58b49fd57d98c013cf83ddbf68b2a145..d2b1e9fa4b11d0cdf12975dd6601610bd6c1652b 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 fea6e8ce785f956ca297bdbef17af96a13c83de9..ab4bca387b2476b5d60409009c35c948164b66f5 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 8eb067cd70a525ad475c44b9cfcd88de98bdc8ab..4206a2b0b54957f79cb2323a5999976bc1674e9c 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 7a9c696bcc9e01b34e9f9d225fb24684f0b3fba6..ef181f33c0915e228d6c59fa5a93accb29f68f75 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 41b56645f6a6eb5882f3b02b76da07665e31a616..262824aaf9afeab617ef8e08ca2f5fb02ee5dacb 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 a0238a783c41c9b774581fb4d768e393d2a6c021..6d8a155b801237db87792c13e4b9077de165e4c0 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 40d8cfa8935a61052a4d3bb5c81fa67aef0b0760..2fe902bce883417f5f7341d241ee5cabc9e04c54 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 ffe73ecc5d2c22acec3245b34f596fdefe8d4996..b665bb66b009d8daebab2a38e428575a1d460d38 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 810d1122e97dd8264fe9ca7c46152b5d01456433..c085d93f36f41eaf92d7f063652523a2b61af449 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 494938d3a6762d930b4c5bc3a7b0ab8fee8aa9f1..f3df3d265cd46196beeaae5f09e12bafb6d3168b 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