- 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-94f89814c4dfmaster
parent
26a07c00fc
commit
41b42e9f9a
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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=
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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,17 +580,22 @@ 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.
|
||||
*
|
||||
|
|
|
|||
Loading…
Reference in New Issue