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 18174b0e23f6c55256b79342964e13c8cbb043ba..1623beea125068c01e9bca168c1ed0d4b3bba3a2 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 @@ -380,6 +380,14 @@ public interface FlexiTableElement extends FormItem { */ public void reset(boolean page, boolean internal, boolean reloadData); + /** + * It will reload all the data without filter. Use it with cautious as + * at some place, there are minimal restrictions to the search string. + * + * @param ureq + */ + public void resetSearch(UserRequest ureq); + public void reloadData(); /** 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 71e78716a52bf90ceea9e663b2db35dad5a6f7d4..094ef037ac676593239304979bb3437c8ecce93d 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 @@ -1295,7 +1295,7 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle if(StringHelper.containsNonWhitespace(search)) { doSearch(ureq, FlexiTableSearchEvent.QUICK_SEARCH, search, null); } else { - doResetSearch(ureq); + resetSearch(ureq); } } @@ -1367,7 +1367,8 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle search, getSelectedFilters(), getSelectedExtendedFilters(), condQueries, FormEvent.ONCLICK)); } - protected void doResetSearch(UserRequest ureq) { + @Override + public void resetSearch(UserRequest ureq) { conditionalQueries = null; currentPage = 0; if(dataSource != null) { diff --git a/src/main/java/org/olat/modules/qpool/ui/AbstractItemListController.java b/src/main/java/org/olat/modules/qpool/ui/AbstractItemListController.java index 03cb37f6692af444c0d758df0f7e321835803735..18b08a9e9ce0ac0dfa11073f647cad32f586b27e 100644 --- a/src/main/java/org/olat/modules/qpool/ui/AbstractItemListController.java +++ b/src/main/java/org/olat/modules/qpool/ui/AbstractItemListController.java @@ -55,6 +55,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.core.id.OLATResourceable; +import org.olat.core.util.StringHelper; import org.olat.core.util.event.EventBus; import org.olat.core.util.event.GenericEventListener; import org.olat.modules.qpool.QPoolService; @@ -109,7 +110,6 @@ public abstract class AbstractItemListController extends FormBasicController extendedSearchCtrl = new ExtendedSearchController(ureq, getWindowControl(), key, mainForm); extendedSearchCtrl.setEnabled(false); - listenTo(extendedSearchCtrl); initForm(ureq); @@ -167,6 +167,7 @@ public abstract class AbstractItemListController extends FormBasicController itemsTable.setExtendedSearch(extendedSearchCtrl); itemsTable.setColumnIndexForDragAndDropLabel(Cols.title.ordinal()); itemsTable.setAndLoadPersistedPreferences(ureq, "qpool-list-" + prefsKey); + listenTo(extendedSearchCtrl); VelocityContainer detailsVC = createVelocityContainer("item_list_details"); itemsTable.setDetailsRenderer(detailsVC, this); @@ -225,6 +226,16 @@ public abstract class AbstractItemListController extends FormBasicController @Override protected void event(UserRequest ureq, Controller source, Event event) { + if(extendedSearchCtrl == source) { + if(event == Event.CANCELLED_EVENT) { + String quickSearch = itemsTable.getQuickSearchString(); + if(StringHelper.containsNonWhitespace(quickSearch)) { + itemsTable.quickSearch(ureq, quickSearch); + } else { + itemsTable.resetSearch(ureq); + } + } + } super.event(ureq, source, event); }