- A to Z filter fürs Folder im Content Center. Die Leiste wird erst ab einer bestimmten Anzahl von Items in einem Folder eingeblendet. Die Anzahl kann über die

Eigenschaft com.arsdigita.cms.folder_atoz_show_limit in der cms.properties in der Registry verändert werden. Defaultwert sind derzeit 100 Items.


git-svn-id: https://svn.libreccm.org/ccm/trunk@835 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2011-04-06 09:09:02 +00:00
parent 26a07c00fc
commit 41b42e9f9a
4 changed files with 52 additions and 15 deletions

View File

@ -450,6 +450,11 @@ public final class CMSConfig extends AbstractConfig {
private final Parameter m_folderBrowseListSize = new IntegerParameter("com.arsdigita.cms.folder_browse_list_size",
Parameter.REQUIRED, 20);
/////////////////////////////////////////////
// Folder A to Z show limit: Display a A to Z filter bar when a folder has more than x items
/////////////////////////////////////////////
private final Parameter m_folderAtoZShowLimit = new IntegerParameter("com.arsdigita.cms.folder_atoz_show_limit",
Parameter.REQUIRED, 100);
// ///////////////////////////////////////////
// publishToFile package related parameter
@ -526,6 +531,7 @@ public final class CMSConfig extends AbstractConfig {
register(m_itemSearchDefaultTab);
register(m_folderBrowseListSize);
register(m_folderAtoZShowLimit);
// publishToFile package related parameter
// Moved to publishToFile.PublishToFileConfig as of version 6.0.2
@ -903,4 +909,8 @@ public final class CMSConfig extends AbstractConfig {
public Integer getFolderBrowseListSize() {
return (Integer) get(m_folderBrowseListSize);
}
public Integer getFolderAtoZShowLimit() {
return (Integer) get(m_folderAtoZShowLimit);
}
}

View File

@ -238,6 +238,11 @@ com.arsdigita.cms.folder_browse_list_size.purpose=Allows to change the number of
com.arsdigita.cms.folder_browse_list_size.example=20
com.arsdigita.cms.folder_browse_list_size.format=[integer]
com.arsdigita.cms.folder_atoz_show_limit.title=Show a a to z filter bar when a folder has more than x items.
com.arsdigita.cms.folder_atoz_show_limit.purpose=Show a a to z filter bar when a folder has more than x items. The filter makes a little bit easier to find a certain item in a folder
com.arsdigita.cms.folder_atoz_show_limit.example=100
com.arsdigita.cms.folder_atoz_show_limit.format=[integer]
com.arsdigita.cms.xx.title=
com.arsdigita.cms.xx.purpose=
com.arsdigita.cms.xx.example=

View File

@ -254,7 +254,9 @@ public class FolderBrowser extends Table {
}
private class FolderTableModelBuilder
extends AbstractTableModelBuilder implements PaginationModelBuilder {
extends AbstractTableModelBuilder
implements PaginationModelBuilder,
FolderManipulator.FilterFormModelBuilder {
private FolderSelectionModel m_folder;
private RequestLocal m_size;
@ -299,6 +301,20 @@ public class FolderBrowser extends Table {
}
}
@Override
public long getFolderSize(PageState state) {
Folder f = (Folder) m_folder.getSelectedObject(state);
Folder.ItemCollection itemColl = f.getPrimaryInstances();
if (itemColl == null) {
return 0;
} else {
return itemColl.size();
}
}
@Override
public int getTotalSize(Paginator paginator, PageState state) {
Integer size = (Integer) m_size.get(state);

View File

@ -59,6 +59,7 @@ import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.bebop.table.TableCellRenderer;
import com.arsdigita.bebop.table.TableColumn;
import com.arsdigita.bebop.tree.TreeCellRenderer;
import com.arsdigita.cms.CMSConfig;
import com.arsdigita.cms.ContentBundle;
import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.ContentSection;
@ -138,7 +139,7 @@ public class FolderManipulator extends SimpleContainer
public void register(Page p) {
super.register(p);
p.setVisibleDefault(m_targetSelector, false);
//p.setVisibleDefault(m_filterForm, true);
p.setVisibleDefault(m_filterForm, true);
p.addComponentStateParam(this, m_sources);
p.addComponentStateParam(this, m_action);
p.addComponentStateParam(this, m_filter);
@ -458,10 +459,10 @@ public class FolderManipulator extends SimpleContainer
panel.add(m_paginator);
panel.add(m_browser);
/*s_log.debug("Adding filter form...");
m_filterForm = new FilterForm((PaginationModelBuilder) m_browser.
s_log.debug("Adding filter form...");
m_filterForm = new FilterForm((FilterFormModelBuilder) m_browser.
getModelBuilder());
getPanel().add(m_filterForm);*/
FolderManipulator.this.add(m_filterForm);
m_checkboxGroup = new CheckboxGroup(m_sources);
panel.add(m_checkboxGroup);
@ -522,9 +523,9 @@ public class FolderManipulator extends SimpleContainer
private SimpleContainer panel;
private boolean visible;
private PaginationModelBuilder modelBuilder;
private FilterFormModelBuilder modelBuilder;
public FilterForm(PaginationModelBuilder modelBuilder) {
public FilterForm(FilterFormModelBuilder modelBuilder) {
super("folderFilterForm");
s_log.debug("Creating filter form...");
@ -579,16 +580,21 @@ public class FolderManipulator extends SimpleContainer
public void submitted(FormSectionEvent fse) throws FormProcessException {
}
public void setVisible(boolean visible) {
this.visible = visible;
}
@Override
public boolean isVisible(PageState state) {
//return super.isVisible(state);
return visible;
if (super.isVisible(state)
&& (modelBuilder.getFolderSize(state) >= CMSConfig.getInstance().getFolderAtoZShowLimit())) {
return true;
} else {
return false;
}
}
}
protected interface FilterFormModelBuilder {
public long getFolderSize(PageState state);
}
/**
* Getting the GlobalizedMessage using a CMS Class targetBundle.