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-94f89814c4df

Former-commit-id: a3f3deb118
pull/2/head
jensp 2017-02-17 19:50:49 +00:00
parent bb41d6df9e
commit 2ff03eb176
5 changed files with 56 additions and 122 deletions

View File

@ -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
.getTableModel(state)).isFolder();
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, itemResolver.generateItemURL(state,
itemId, (long) key,
name, name,
section, section,
"DRAFT")); "DRAFT"));
// return new Link(name, }
// itemResolver.generateItemURL(
// state,
// item.getObjectId(),
// name,
// section,
// item.getVersion().name()));
} }
} }
@ -510,7 +419,8 @@ 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(
state,
(long) key, (long) key,
locale.toString(), locale.toString(),
section, section,
@ -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)));
}
} }
} }

View File

@ -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;

View File

@ -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();
}
} }

View File

@ -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;
@ -138,4 +138,12 @@ class FolderBrowserTableRow {
this.deletable = deletable; this.deletable = deletable;
} }
public boolean isFolder() {
return folder;
}
protected void setFolder(final boolean folder) {
this.folder = folder;
}
} }

View File

@ -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.
* *