CCM NG/ccm-cms/BrowseTab: Changing the current folder by the links in the item list now works. Also the link for going the edit form of an content item is correct now.
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4582 8810af33-2d31-482b-a856-94f89814c4dfccm-docs
parent
3f59f81984
commit
56ebb00414
|
|
@ -119,24 +119,6 @@ public class FolderBrowser extends Table {
|
||||||
|
|
||||||
this.folderSelectionModel = folderSelectionModel;
|
this.folderSelectionModel = folderSelectionModel;
|
||||||
|
|
||||||
/*
|
|
||||||
*
|
|
||||||
* This code should be uncommented if the desired behaviour is for a
|
|
||||||
* change of folder to cause reversion to default ordering of contained
|
|
||||||
* items (by name ascending). Our feeling is that the user selected
|
|
||||||
* ordering should be retained for the duration of the folder browsing
|
|
||||||
* session. If anyone wants this alternative behaviour it should be
|
|
||||||
* brought in under the control of a config parameter.
|
|
||||||
*
|
|
||||||
* m_currentFolder.addChangeListener(new ChangeListener() {
|
|
||||||
*
|
|
||||||
* public void stateChanged(ChangeEvent e) { PageState state =
|
|
||||||
* e.getPageState(); state.setValue(m_sortType,
|
|
||||||
* m_sortType.getDefaultValue()); state.setValue(m_sortDirection,
|
|
||||||
* m_sortDirection.getDefaultValue());
|
|
||||||
*
|
|
||||||
* }});
|
|
||||||
*/
|
|
||||||
setClassAttr("dataTable");
|
setClassAttr("dataTable");
|
||||||
|
|
||||||
getHeader().setDefaultRenderer(
|
getHeader().setDefaultRenderer(
|
||||||
|
|
@ -194,8 +176,7 @@ public class FolderBrowser extends Table {
|
||||||
final PermissionChecker permissionChecker = cdiUtil.findBean(
|
final PermissionChecker permissionChecker = cdiUtil.findBean(
|
||||||
PermissionChecker.class);
|
PermissionChecker.class);
|
||||||
final Category folder = (Category) folderSelectionModel
|
final Category folder = (Category) folderSelectionModel
|
||||||
.getSelectedObject(
|
.getSelectedObject(state);
|
||||||
state);
|
|
||||||
|
|
||||||
final boolean canDelete = permissionChecker.isPermitted(
|
final boolean canDelete = permissionChecker.isPermitted(
|
||||||
ItemPrivileges.DELETE, folder);
|
ItemPrivileges.DELETE, folder);
|
||||||
|
|
@ -258,79 +239,6 @@ public class FolderBrowser extends Table {
|
||||||
return (String) state.getValue(atozFilterParameter);
|
return (String) state.getValue(atozFilterParameter);
|
||||||
}
|
}
|
||||||
|
|
||||||
// private class FolderTableModelBuilder
|
|
||||||
// extends AbstractTableModelBuilder
|
|
||||||
// implements PaginationModelBuilder,
|
|
||||||
// FolderManipulator.FilterFormModelBuilder {
|
|
||||||
//
|
|
||||||
// private final FolderSelectionModel folderModel;
|
|
||||||
// private final FolderBrowser folderBrowser;
|
|
||||||
//// private final ContentItemRepository itemRepo;
|
|
||||||
//// private final ConfigurationManager confManager;
|
|
||||||
//// private final ContentSectionManager sectionManager;
|
|
||||||
// final FolderBrowserController controller;
|
|
||||||
//
|
|
||||||
// public FolderTableModelBuilder(final FolderSelectionModel folderModel) {
|
|
||||||
// this(folderModel, null);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public FolderTableModelBuilder(final FolderSelectionModel folderModel,
|
|
||||||
// final FolderBrowser folderBrowser) {
|
|
||||||
// this.folderModel = folderModel;
|
|
||||||
// this.folderBrowser = folderBrowser;
|
|
||||||
// final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
|
||||||
// controller = cdiUtil.findBean(FolderBrowserController.class);
|
|
||||||
//// itemRepo = cdiUtil.findBean(ContentItemRepository.class);
|
|
||||||
//// confManager = cdiUtil.findBean(ConfigurationManager.class);
|
|
||||||
//// sectionManager = cdiUtil.findBean(ContentSectionManager.class);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public TableModel makeModel(final Table table, final PageState state) {
|
|
||||||
// final FolderSelectionModel folderSelectionModel
|
|
||||||
// = getFolderSelectionModel();
|
|
||||||
// final Folder folder = folderSelectionModel.getSelectedObject(state);
|
|
||||||
// if (folder == null) {
|
|
||||||
// return Table.EMPTY_MODEL;
|
|
||||||
// } else {
|
|
||||||
// table.getRowSelectionModel().clearSelection(state);
|
|
||||||
// final List<Folder> subFolders = folder.getSubFolders();
|
|
||||||
// final List<ContentItem> items = folder.getObjects()
|
|
||||||
// .stream()
|
|
||||||
// .map(categorization -> categorization.getCategorizedObject())
|
|
||||||
// .filter(object -> object instanceof ContentItem)
|
|
||||||
// .map(object -> (ContentItem) object)
|
|
||||||
// .collect(Collectors.toList());
|
|
||||||
//
|
|
||||||
// final List<CcmObject> objects = new ArrayList<>();
|
|
||||||
// objects.addAll(subFolders);
|
|
||||||
// objects.addAll(items);
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public int getTotalSize(final Paginator paginator,
|
|
||||||
// final PageState state) {
|
|
||||||
// throw new UnsupportedOperationException();
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public boolean isVisible(final PageState state) {
|
|
||||||
// return folderBrowser != null && folderBrowser.isVisible(state);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public long getFolderSize(final PageState state) {
|
|
||||||
// throw new UnsupportedOperationException();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
private class HeaderCellRenderer
|
private class HeaderCellRenderer
|
||||||
extends com.arsdigita.cms.ui.util.DefaultTableCellRenderer {
|
extends com.arsdigita.cms.ui.util.DefaultTableCellRenderer {
|
||||||
|
|
||||||
|
|
@ -420,11 +328,6 @@ public class FolderBrowser extends Table {
|
||||||
final int row,
|
final int row,
|
||||||
final int column) {
|
final int column) {
|
||||||
|
|
||||||
// final ContentItem item = (ContentItem) value;
|
|
||||||
// final String name = item.getDisplayName();
|
|
||||||
// final ContentSection section = item.getContentType().
|
|
||||||
// getContentSection();
|
|
||||||
final long itemId = (long) key;
|
|
||||||
final String name = (String) value;
|
final String name = (String) value;
|
||||||
final ContentSection section = CMS.getContext().getContentSection();
|
final ContentSection section = CMS.getContext().getContentSection();
|
||||||
final ContentSectionManager sectionManager = CdiUtil.createCdiUtil()
|
final ContentSectionManager sectionManager = CdiUtil.createCdiUtil()
|
||||||
|
|
@ -432,20 +335,26 @@ public class FolderBrowser extends Table {
|
||||||
final ItemResolver itemResolver = sectionManager.getItemResolver(
|
final ItemResolver itemResolver = sectionManager.getItemResolver(
|
||||||
section);
|
section);
|
||||||
|
|
||||||
return new Link(name,
|
final boolean isFolder = ((FolderBrowserTableModel) table
|
||||||
itemResolver.generateItemURL(state,
|
.getTableModel(state)).isFolder();
|
||||||
itemId,
|
|
||||||
name,
|
|
||||||
section,
|
|
||||||
"DRAFT"));
|
|
||||||
// return new Link(name,
|
|
||||||
// itemResolver.generateItemURL(
|
|
||||||
// state,
|
|
||||||
// item.getObjectId(),
|
|
||||||
// name,
|
|
||||||
// section,
|
|
||||||
// item.getVersion().name()));
|
|
||||||
|
|
||||||
|
if (isFolder) {
|
||||||
|
//return new ControlLink(new Text(name));
|
||||||
|
return super.getComponent(table,
|
||||||
|
state,
|
||||||
|
value,
|
||||||
|
isSelected,
|
||||||
|
key,
|
||||||
|
row,
|
||||||
|
column);
|
||||||
|
} else {
|
||||||
|
return new Link(new Text(name),
|
||||||
|
itemResolver.generateItemURL(state,
|
||||||
|
(long) key,
|
||||||
|
name,
|
||||||
|
section,
|
||||||
|
"DRAFT"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -510,11 +419,12 @@ public class FolderBrowser extends Table {
|
||||||
final List<Locale> availableLocales = (List<Locale>) value;
|
final List<Locale> availableLocales = (List<Locale>) value;
|
||||||
availableLocales.forEach(locale -> container.add(new Link(
|
availableLocales.forEach(locale -> container.add(new Link(
|
||||||
new Text(locale.toString()),
|
new Text(locale.toString()),
|
||||||
itemResolver.generateItemURL(state,
|
itemResolver.generateItemURL(
|
||||||
(long) key,
|
state,
|
||||||
locale.toString(),
|
(long) key,
|
||||||
section,
|
locale.toString(),
|
||||||
"DRAFT"))));
|
section,
|
||||||
|
"DRAFT"))));
|
||||||
|
|
||||||
return container;
|
return container;
|
||||||
}
|
}
|
||||||
|
|
@ -765,11 +675,10 @@ public class FolderBrowser extends Table {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final String key = (String) event.getRowKey();
|
final String key = (String) event.getRowKey();
|
||||||
if (key.startsWith("-")) { // XXX dirty dirty
|
|
||||||
clearSelection(state);
|
clearSelection(state);
|
||||||
getFolderSelectionModel().setSelectedKey(
|
getFolderSelectionModel().setSelectedKey(state, Long.parseLong(key));
|
||||||
state, Long.parseLong(key.substring(1)));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -299,6 +299,7 @@ public class FolderBrowserController {
|
||||||
} else {
|
} else {
|
||||||
row.setTitle(folder.getTitle().getValue(defaultLocale));
|
row.setTitle(folder.getTitle().getValue(defaultLocale));
|
||||||
}
|
}
|
||||||
|
row.setFolder(true);
|
||||||
} else if (object instanceof ContentItem) {
|
} else if (object instanceof ContentItem) {
|
||||||
final ContentItem item = (ContentItem) object;
|
final ContentItem item = (ContentItem) object;
|
||||||
row.setObjectId(item.getObjectId());
|
row.setObjectId(item.getObjectId());
|
||||||
|
|
@ -320,6 +321,7 @@ public class FolderBrowserController {
|
||||||
final ContentTypeInfo typeInfo = typesManager.getContentTypeInfo(type);
|
final ContentTypeInfo typeInfo = typesManager.getContentTypeInfo(type);
|
||||||
row.setTypeLabelBundle(typeInfo.getLabelBundle());
|
row.setTypeLabelBundle(typeInfo.getLabelBundle());
|
||||||
row.setTypeLabelKey(typeInfo.getLabelKey());
|
row.setTypeLabelKey(typeInfo.getLabelKey());
|
||||||
|
row.setFolder(false);
|
||||||
} else {
|
} else {
|
||||||
row.setObjectId(object.getObjectId());
|
row.setObjectId(object.getObjectId());
|
||||||
row.setObjectUuid(object.getUuid());
|
row.setObjectUuid(object.getUuid());
|
||||||
|
|
@ -327,6 +329,7 @@ public class FolderBrowserController {
|
||||||
row.setLanguages(Collections.emptyList());
|
row.setLanguages(Collections.emptyList());
|
||||||
final LocalizedString title = new LocalizedString();
|
final LocalizedString title = new LocalizedString();
|
||||||
title.addValue(globalizationHelper.getNegotiatedLocale(), "???");
|
title.addValue(globalizationHelper.getNegotiatedLocale(), "???");
|
||||||
|
row.setFolder(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return row;
|
return row;
|
||||||
|
|
|
||||||
|
|
@ -99,7 +99,16 @@ class FolderBrowserTableModel implements TableModel {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getKeyAt(final int columnIndex) {
|
public Object getKeyAt(final int columnIndex) {
|
||||||
|
// if (currentRow.isFolder()) {
|
||||||
|
// return String.format("folder-%d", currentRow.getObjectId());
|
||||||
|
// } else {
|
||||||
|
// return String.format("item-%d", currentRow.getObjectId());
|
||||||
|
// }
|
||||||
return currentRow.getObjectId();
|
return currentRow.getObjectId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isFolder() {
|
||||||
|
return currentRow.isFolder();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,6 @@
|
||||||
*/
|
*/
|
||||||
package com.arsdigita.cms.ui.folder;
|
package com.arsdigita.cms.ui.folder;
|
||||||
|
|
||||||
import org.libreccm.l10n.LocalizedString;
|
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
@ -41,6 +40,7 @@ class FolderBrowserTableRow {
|
||||||
private Date created;
|
private Date created;
|
||||||
private Date lastModified;
|
private Date lastModified;
|
||||||
private boolean deletable;
|
private boolean deletable;
|
||||||
|
private boolean folder;
|
||||||
|
|
||||||
public long getObjectId() {
|
public long getObjectId() {
|
||||||
return objectId;
|
return objectId;
|
||||||
|
|
@ -137,5 +137,13 @@ class FolderBrowserTableRow {
|
||||||
protected void setDeletable(final boolean deletable) {
|
protected void setDeletable(final boolean deletable) {
|
||||||
this.deletable = deletable;
|
this.deletable = deletable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isFolder() {
|
||||||
|
return folder;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setFolder(final boolean folder) {
|
||||||
|
this.folder = folder;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,11 @@ public class FolderSelectionModel extends CcmObjectSelectionModel<Folder> {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSelectedKey(final PageState state, final Long key) {
|
||||||
|
super.setSelectedKey(state, key);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clear the selection by resetting it to the root folder id.
|
* Clear the selection by resetting it to the root folder id.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue