- 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",
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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=
|
||||||
|
|
|
||||||
|
|
@ -250,11 +250,13 @@ public class FolderBrowser extends Table {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected long getFolderSize() {
|
protected long getFolderSize() {
|
||||||
return m_folderSize;
|
return m_folderSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
|
|
@ -312,7 +328,7 @@ public class FolderBrowser extends Table {
|
||||||
if (itemColl == null) {
|
if (itemColl == null) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state.getValue(m_filter) != null) {
|
if (state.getValue(m_filter) != null) {
|
||||||
itemColl.addFilter(String.format(
|
itemColl.addFilter(String.format(
|
||||||
"lower(name) like lower('%s%%') or lower(displayName) like lower('%s%%')",
|
"lower(name) like lower('%s%%') or lower(displayName) like lower('%s%%')",
|
||||||
|
|
|
||||||
|
|
@ -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,17 +580,22 @@ 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.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue