- 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", private final Parameter m_folderBrowseListSize = new IntegerParameter("com.arsdigita.cms.folder_browse_list_size",
Parameter.REQUIRED, 20); 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 // publishToFile package related parameter
@ -526,6 +531,7 @@ public final class CMSConfig extends AbstractConfig {
register(m_itemSearchDefaultTab); register(m_itemSearchDefaultTab);
register(m_folderBrowseListSize); register(m_folderBrowseListSize);
register(m_folderAtoZShowLimit);
// publishToFile package related parameter // publishToFile package related parameter
// Moved to publishToFile.PublishToFileConfig as of version 6.0.2 // Moved to publishToFile.PublishToFileConfig as of version 6.0.2
@ -903,4 +909,8 @@ public final class CMSConfig extends AbstractConfig {
public Integer getFolderBrowseListSize() { public Integer getFolderBrowseListSize() {
return (Integer) get(m_folderBrowseListSize); 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.example=20
com.arsdigita.cms.folder_browse_list_size.format=[integer] 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.title=
com.arsdigita.cms.xx.purpose= com.arsdigita.cms.xx.purpose=
com.arsdigita.cms.xx.example= com.arsdigita.cms.xx.example=

View File

@ -254,7 +254,9 @@ public class FolderBrowser extends Table {
} }
private class FolderTableModelBuilder private class FolderTableModelBuilder
extends AbstractTableModelBuilder implements PaginationModelBuilder { extends AbstractTableModelBuilder
implements PaginationModelBuilder,
FolderManipulator.FilterFormModelBuilder {
private FolderSelectionModel m_folder; private FolderSelectionModel m_folder;
private RequestLocal m_size; 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) { public int getTotalSize(Paginator paginator, PageState state) {
Integer size = (Integer) m_size.get(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.TableCellRenderer;
import com.arsdigita.bebop.table.TableColumn; import com.arsdigita.bebop.table.TableColumn;
import com.arsdigita.bebop.tree.TreeCellRenderer; import com.arsdigita.bebop.tree.TreeCellRenderer;
import com.arsdigita.cms.CMSConfig;
import com.arsdigita.cms.ContentBundle; import com.arsdigita.cms.ContentBundle;
import com.arsdigita.cms.ContentItem; import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.ContentSection; import com.arsdigita.cms.ContentSection;
@ -138,7 +139,7 @@ public class FolderManipulator extends SimpleContainer
public void register(Page p) { public void register(Page p) {
super.register(p); super.register(p);
p.setVisibleDefault(m_targetSelector, false); p.setVisibleDefault(m_targetSelector, false);
//p.setVisibleDefault(m_filterForm, true); p.setVisibleDefault(m_filterForm, true);
p.addComponentStateParam(this, m_sources); p.addComponentStateParam(this, m_sources);
p.addComponentStateParam(this, m_action); p.addComponentStateParam(this, m_action);
p.addComponentStateParam(this, m_filter); p.addComponentStateParam(this, m_filter);
@ -458,10 +459,10 @@ public class FolderManipulator extends SimpleContainer
panel.add(m_paginator); panel.add(m_paginator);
panel.add(m_browser); panel.add(m_browser);
/*s_log.debug("Adding filter form..."); s_log.debug("Adding filter form...");
m_filterForm = new FilterForm((PaginationModelBuilder) m_browser. m_filterForm = new FilterForm((FilterFormModelBuilder) m_browser.
getModelBuilder()); getModelBuilder());
getPanel().add(m_filterForm);*/ FolderManipulator.this.add(m_filterForm);
m_checkboxGroup = new CheckboxGroup(m_sources); m_checkboxGroup = new CheckboxGroup(m_sources);
panel.add(m_checkboxGroup); panel.add(m_checkboxGroup);
@ -522,9 +523,9 @@ public class FolderManipulator extends SimpleContainer
private SimpleContainer panel; private SimpleContainer panel;
private boolean visible; private boolean visible;
private PaginationModelBuilder modelBuilder; private FilterFormModelBuilder modelBuilder;
public FilterForm(PaginationModelBuilder modelBuilder) { public FilterForm(FilterFormModelBuilder modelBuilder) {
super("folderFilterForm"); super("folderFilterForm");
s_log.debug("Creating filter form..."); s_log.debug("Creating filter form...");
@ -579,16 +580,21 @@ public class FolderManipulator extends SimpleContainer
public void submitted(FormSectionEvent fse) throws FormProcessException { public void submitted(FormSectionEvent fse) throws FormProcessException {
} }
public void setVisible(boolean visible) {
this.visible = visible;
}
@Override @Override
public boolean isVisible(PageState state) { public boolean isVisible(PageState state) {
//return super.isVisible(state); if (super.isVisible(state)
return visible; && (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. * Getting the GlobalizedMessage using a CMS Class targetBundle.