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 1657dfdc2c2d9a8ebaaa765531cacc33712e30ac..666252c8c2d3d3e42bac7872c03d346077ab02ea 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 @@ -1082,10 +1082,28 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle filter.setSelected(false); } } else if(multiFilterSelection) { + boolean showAll = false; for(FlexiTableFilter filter:filters) { - if(filter.getFilter().equals(filterKey)) { - filter.setSelected(!filter.isSelected()); + if(filter.getFilter().equals(filterKey) && filter.isShowAll()) { + showAll = !filter.isSelected();//Show all is currently not selected, but the event will toggle it } + } + + if(showAll) { + for(FlexiTableFilter filter:filters) { + filter.setSelected(filter.isShowAll()); + } + } else { + for(FlexiTableFilter filter:filters) { + if(filter.isShowAll()) { + filter.setSelected(false); + } else if(filter.getFilter().equals(filterKey)) { + filter.setSelected(!filter.isSelected()); + } + } + } + + for(FlexiTableFilter filter:filters) { if(filter.isSelected()) { selectedFilters.add(filter); } diff --git a/src/main/java/org/olat/modules/portfolio/ui/shared/SharedPagesController.java b/src/main/java/org/olat/modules/portfolio/ui/shared/SharedPagesController.java index 3b1adca3e35fb094f7638fe0f3c9ca9a27e8f395..469e29e2eeba2f80cefffbe043124c606afafba6 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/shared/SharedPagesController.java +++ b/src/main/java/org/olat/modules/portfolio/ui/shared/SharedPagesController.java @@ -311,9 +311,11 @@ public class SharedPagesController extends FormBasicController implements Activa @Override protected void event(UserRequest ureq, Controller source, Event event) { if(pageCtrl == source) { - if(event instanceof ClosePageEvent || event instanceof DonePageEvent) { + if(event instanceof ClosePageEvent) { loadModel(false, false); stackPanel.popController(pageCtrl); + } else if(event instanceof DonePageEvent) { + loadModel(false, false); } } super.event(ureq, source, event); diff --git a/src/main/java/org/olat/modules/portfolio/ui/shared/SharedPagesDataModel.java b/src/main/java/org/olat/modules/portfolio/ui/shared/SharedPagesDataModel.java index c2e019887dd37b78b8c04fc068d8329a593944ee..babf347738dc90fed5a4ef3c81306c65ec12c3fa 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/shared/SharedPagesDataModel.java +++ b/src/main/java/org/olat/modules/portfolio/ui/shared/SharedPagesDataModel.java @@ -68,7 +68,9 @@ public class SharedPagesDataModel extends DefaultFlexiTableDataModel<SharedPageR @Override public void filter(List<FlexiTableFilter> filters) { String key = filters == null || filters.isEmpty() || filters.get(0) == null ? null : filters.get(0).getFilter(); - if(StringHelper.containsNonWhitespace(key)) { + if("all".equals(key)) { + super.setObjects(backups); + } else if(StringHelper.containsNonWhitespace(key)) { List<String> allowedStatus = filters.stream() .map(f -> f.getFilter()).collect(Collectors.toList()); List<SharedPageRow> filteredRows = backups.stream()