diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/StaticFlexiCellRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/StaticFlexiCellRenderer.java index b7e8bc02cdf575cbf759e91b180f2d7f3a0a45c7..669bc341a0ae2f5078d04b38c5975222f67e847d 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/StaticFlexiCellRenderer.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/StaticFlexiCellRenderer.java @@ -74,6 +74,10 @@ public class StaticFlexiCellRenderer implements FlexiCellRenderer { public String getLabel() { return label; } + + public FlexiCellRenderer getLabelDelegate() { + return labelDelegate; + } public String getIconLeftCSS() { return iconLeftCSS; diff --git a/src/main/java/org/olat/modules/curriculum/ui/CurriculumElementListController.java b/src/main/java/org/olat/modules/curriculum/ui/CurriculumElementListController.java index 12d96b6fddf452f0ca5c0d27c0adaf15cec518ea..7a8ea41ca84d013ae309432c072d5f5af120cf13 100644 --- a/src/main/java/org/olat/modules/curriculum/ui/CurriculumElementListController.java +++ b/src/main/java/org/olat/modules/curriculum/ui/CurriculumElementListController.java @@ -48,6 +48,8 @@ import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTable import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableCssDelegate; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModelFactory; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableRendererType; +import org.olat.core.gui.components.form.flexible.impl.elements.table.SelectionEvent; +import org.olat.core.gui.components.form.flexible.impl.elements.table.TextFlexiCellRenderer; import org.olat.core.gui.components.link.Link; import org.olat.core.gui.components.stack.BreadcrumbPanel; import org.olat.core.gui.components.velocity.VelocityContainer; @@ -68,6 +70,7 @@ import org.olat.modules.curriculum.CurriculumRef; import org.olat.modules.curriculum.CurriculumService; import org.olat.modules.curriculum.model.CurriculumElementRepositoryEntryViews; import org.olat.modules.curriculum.ui.CurriculumElementWithViewsDataModel.ElementViewCols; +import org.olat.modules.curriculum.ui.component.CurriculumElementCompositeRenderer; import org.olat.modules.curriculum.ui.component.CurriculumElementIndentRenderer; import org.olat.modules.curriculum.ui.component.CurriculumElementViewsRowComparator; import org.olat.repository.RepositoryEntry; @@ -147,10 +150,14 @@ public class CurriculumElementListController extends FormBasicController impleme protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, ElementViewCols.key)); - columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ElementViewCols.elementDisplayName, new CurriculumElementIndentRenderer())); - columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ElementViewCols.elementIdentifier)); - columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ElementViewCols.entryDisplayName)); - columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ElementViewCols.entryExternalRef)); + DefaultFlexiColumnModel elementNameCol = new DefaultFlexiColumnModel(ElementViewCols.elementDisplayName, "select"); + elementNameCol.setCellRenderer(new CurriculumElementCompositeRenderer("select", new CurriculumElementIndentRenderer())); + columnsModel.addFlexiColumnModel(elementNameCol); + DefaultFlexiColumnModel elementIdentifierCol = new DefaultFlexiColumnModel(ElementViewCols.elementIdentifier, "select"); + elementIdentifierCol.setCellRenderer(new CurriculumElementCompositeRenderer("select", new TextFlexiCellRenderer())); + columnsModel.addFlexiColumnModel(elementIdentifierCol); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ElementViewCols.entryDisplayName, "select")); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ElementViewCols.entryExternalRef, "select")); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, ElementViewCols.select)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ElementViewCols.mark)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ElementViewCols.details)); @@ -452,6 +459,16 @@ public class CurriculumElementListController extends FormBasicController impleme link.getComponent().setDirty(true); row.setMarked(marked); } + } else if(source == tableEl) { + if(event instanceof SelectionEvent) { + SelectionEvent se = (SelectionEvent)event; + CurriculumElementWithViewsRow row = tableModel.getObject(se.getIndex()); + if (row.isMember()) { + doOpen(ureq, row, null); + } else { + doOpenDetails(ureq, row); + } + } } super.formInnerEvent(ureq, source, event); } diff --git a/src/main/java/org/olat/modules/curriculum/ui/component/CurriculumElementCompositeRenderer.java b/src/main/java/org/olat/modules/curriculum/ui/component/CurriculumElementCompositeRenderer.java new file mode 100644 index 0000000000000000000000000000000000000000..4cbea5e678f7d0848994cd270cc56c814ca6127b --- /dev/null +++ b/src/main/java/org/olat/modules/curriculum/ui/component/CurriculumElementCompositeRenderer.java @@ -0,0 +1,53 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.modules.curriculum.ui.component; + +import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiCellRenderer; +import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableComponent; +import org.olat.core.gui.components.form.flexible.impl.elements.table.StaticFlexiCellRenderer; +import org.olat.core.gui.render.Renderer; +import org.olat.core.gui.render.StringOutput; +import org.olat.core.gui.render.URLBuilder; +import org.olat.core.gui.translator.Translator; +import org.olat.modules.curriculum.ui.CurriculumElementWithViewsRow; + +/** + * + * Initial date: 10 août 2018<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class CurriculumElementCompositeRenderer extends StaticFlexiCellRenderer { + + public CurriculumElementCompositeRenderer(String action, FlexiCellRenderer labelDelegate) { + super(action, labelDelegate); + } + + @Override + public void render(Renderer renderer, StringOutput target, Object cellValue, int row, FlexiTableComponent source, + URLBuilder ubu, Translator translator) { + CurriculumElementWithViewsRow view = (CurriculumElementWithViewsRow)source.getFlexiTableElement().getTableDataModel().getObject(row); + if(view.isCurriculumElementOnly()) { + getLabelDelegate().render(renderer, target, cellValue, row, source, ubu, translator); + } else { + super.render(renderer, target, cellValue, row, source, ubu, translator); + } + } +} diff --git a/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties index d879fb9d2e0ad8dab2999dc344005956fef7c452..0f0b7cc648e24e02ebeb083ca5c1df6605a0d32f 100644 --- a/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties @@ -485,7 +485,7 @@ search.course=Kurse search.courses.closed=Beendet search.courses.student=Suchen search.cp=CP-Lerninhalte -search.curriculums=Curriculum +search.curriculums=Lehrg\u00E4nge search.deleted=Gel\u00F6scht search.filter.showAll=alle anzeigen search.filter.type=Typ diff --git a/src/main/java/org/olat/repository/ui/author/RepositoryEditDescriptionController.java b/src/main/java/org/olat/repository/ui/author/RepositoryEditDescriptionController.java index 990400dac5219a98aa4ca2f3851d648c6c929687..89d8c54a7984ca63476b4390babfb9464a13a5d1 100644 --- a/src/main/java/org/olat/repository/ui/author/RepositoryEditDescriptionController.java +++ b/src/main/java/org/olat/repository/ui/author/RepositoryEditDescriptionController.java @@ -521,6 +521,14 @@ public class RepositoryEditDescriptionController extends FormBasicController { allOk &= false; } } + + if (organisationsEl != null) { + organisationsEl.clearError(); + if(!organisationsEl.isAtLeastSelected(1)) { + organisationsEl.setErrorKey("form.legende.mandatory", null); + allOk &= false; + } + } return allOk; } diff --git a/src/main/java/org/olat/repository/ui/list/DefaultRepositoryEntryDataSource.java b/src/main/java/org/olat/repository/ui/list/DefaultRepositoryEntryDataSource.java index 38c7a55ec6210bca5d857bb11b1a386b5a7d55a1..b7cd8fd1f29dc0486e9da599817a41a31e898c89 100644 --- a/src/main/java/org/olat/repository/ui/list/DefaultRepositoryEntryDataSource.java +++ b/src/main/java/org/olat/repository/ui/list/DefaultRepositoryEntryDataSource.java @@ -133,7 +133,7 @@ public class DefaultRepositoryEntryDataSource implements FlexiTableDataSourceDel List<RepositoryEntryRow> rows = processViewModel(views); ResultInfos<RepositoryEntryRow> results = new DefaultResultInfos<RepositoryEntryRow>(firstResult + rows.size(), -1, rows); if(firstResult == 0 && views.size() < maxResults) { - count = new Integer(views.size()); + count = Integer.valueOf(views.size()); } return results; } diff --git a/src/main/java/org/olat/repository/ui/list/OverviewRepositoryListController.java b/src/main/java/org/olat/repository/ui/list/OverviewRepositoryListController.java index 059bc2d33f68e09773e6a812aaaaabe3980e486f..a54de12c040c2b6d32467eb0793b0732a3b70466 100644 --- a/src/main/java/org/olat/repository/ui/list/OverviewRepositoryListController.java +++ b/src/main/java/org/olat/repository/ui/list/OverviewRepositoryListController.java @@ -123,16 +123,16 @@ public class OverviewRepositoryListController extends BasicController implements myCourseLink.setElementCssClass("o_sel_mycourses_my"); segmentView.addSegment(myCourseLink, false); - closedCourseLink = LinkFactory.createLink("search.courses.closed", mainVC, this); - closedCourseLink.setElementCssClass("o_sel_mycourses_closed"); - segmentView.addSegment(closedCourseLink, false); - if(curriculumModule.isEnabled() && curriculumModule.isCurriculumInMyCourses()) { curriculumLink = LinkFactory.createLink("search.curriculums", mainVC, this); curriculumLink.setElementCssClass("o_sel_mycurriculums"); segmentView.addSegment(curriculumLink, false); } + closedCourseLink = LinkFactory.createLink("search.courses.closed", mainVC, this); + closedCourseLink.setElementCssClass("o_sel_mycourses_closed"); + segmentView.addSegment(closedCourseLink, false); + if(repositoryModule.isCatalogEnabled() && repositoryModule.isCatalogBrowsingEnabled()) { catalogLink = LinkFactory.createLink("search.catalog", mainVC, this); catalogLink.setElementCssClass("o_sel_mycourses_catlog");