CCM NG/ccm-cms: Copying items in the FolderBrowser now works
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4618 8810af33-2d31-482b-a856-94f89814c4df
parent
a71eeed9c3
commit
e1b296b5dd
|
|
@ -65,7 +65,6 @@ import com.arsdigita.toolbox.ui.ActionGroup;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
@ -81,11 +80,14 @@ import org.librecms.contentsection.ContentItem;
|
||||||
import org.librecms.contentsection.ContentItemManager;
|
import org.librecms.contentsection.ContentItemManager;
|
||||||
import org.librecms.contentsection.ContentItemRepository;
|
import org.librecms.contentsection.ContentItemRepository;
|
||||||
import org.librecms.contentsection.Folder;
|
import org.librecms.contentsection.Folder;
|
||||||
|
import org.librecms.contentsection.FolderManager;
|
||||||
import org.librecms.contentsection.FolderRepository;
|
import org.librecms.contentsection.FolderRepository;
|
||||||
import org.librecms.contentsection.privileges.ItemPrivileges;
|
import org.librecms.contentsection.privileges.ItemPrivileges;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import static org.librecms.CmsConstants.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Browse folders and manipulate them with various actions (move/copy/delete).
|
* Browse folders and manipulate them with various actions (move/copy/delete).
|
||||||
*
|
*
|
||||||
|
|
@ -93,14 +95,14 @@ import java.util.Objects;
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("PMD.BeanMembersShouldSerialize")
|
@SuppressWarnings("PMD.BeanMembersShouldSerialize")
|
||||||
public class FolderManipulator extends SimpleContainer implements
|
public class FolderManipulator extends SimpleContainer implements
|
||||||
//FormProcessListener,
|
//FormProcessListener,
|
||||||
//FormValidationListener,
|
//FormValidationListener,
|
||||||
//FormSubmissionListener,
|
//FormSubmissionListener,
|
||||||
Resettable {
|
Resettable {
|
||||||
|
|
||||||
//public static final String RESOURCE_BUNDLE = "com.arsdigita.cms.ui.folder.CMSFolderResources";
|
//public static final String RESOURCE_BUNDLE = "com.arsdigita.cms.ui.folder.CMSFolderResources";
|
||||||
private static final Logger LOGGER = LogManager.getLogger(
|
private static final Logger LOGGER = LogManager.getLogger(
|
||||||
FolderManipulator.class);
|
FolderManipulator.class);
|
||||||
|
|
||||||
private static final String ATOZ_FILTER_PARAM = "aToZfilter";
|
private static final String ATOZ_FILTER_PARAM = "aToZfilter";
|
||||||
private static final String ACTION_PARAM = "act";
|
private static final String ACTION_PARAM = "act";
|
||||||
|
|
@ -113,9 +115,9 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
//private static final String UNPUBLISH = "UnPublish";
|
//private static final String UNPUBLISH = "UnPublish";
|
||||||
|
|
||||||
private final ArrayParameter sourcesParam = new ArrayParameter(
|
private final ArrayParameter sourcesParam = new ArrayParameter(
|
||||||
new StringParameter(SOURCES_PARAM));
|
new StringParameter(SOURCES_PARAM));
|
||||||
private final StringParameter actionParam
|
private final StringParameter actionParam
|
||||||
= new StringParameter(ACTION_PARAM);
|
= new StringParameter(ACTION_PARAM);
|
||||||
;
|
;
|
||||||
/**
|
/**
|
||||||
* The folder in which the source items live.
|
* The folder in which the source items live.
|
||||||
|
|
@ -127,9 +129,9 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
|
|
||||||
private FilterForm filterForm;
|
private FilterForm filterForm;
|
||||||
private final StringParameter atozFilterParam = new StringParameter(
|
private final StringParameter atozFilterParam = new StringParameter(
|
||||||
ATOZ_FILTER_PARAM);
|
ATOZ_FILTER_PARAM);
|
||||||
private final StringParameter filterParam
|
private final StringParameter filterParam
|
||||||
= new StringParameter(FILTER_PARAM);
|
= new StringParameter(FILTER_PARAM);
|
||||||
|
|
||||||
public FolderManipulator(final FolderSelectionModel folderModel) {
|
public FolderManipulator(final FolderSelectionModel folderModel) {
|
||||||
|
|
||||||
|
|
@ -143,9 +145,9 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
|
|
||||||
targetSelector.addProcessListener(new TargetSelectorProcessListener());
|
targetSelector.addProcessListener(new TargetSelectorProcessListener());
|
||||||
targetSelector.addValidationListener(
|
targetSelector.addValidationListener(
|
||||||
new TargetSelectorValidationListener());
|
new TargetSelectorValidationListener());
|
||||||
targetSelector.addSubmissionListener(
|
targetSelector.addSubmissionListener(
|
||||||
new TargetSelectorSubmissionListener());
|
new TargetSelectorSubmissionListener());
|
||||||
add(targetSelector);
|
add(targetSelector);
|
||||||
|
|
||||||
//publishDialog.addProcessListener(new PublishDialogProcessListener());
|
//publishDialog.addProcessListener(new PublishDialogProcessListener());
|
||||||
|
|
@ -207,7 +209,7 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
|
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
final FolderBrowserController controller = cdiUtil.findBean(
|
final FolderBrowserController controller = cdiUtil.findBean(
|
||||||
FolderBrowserController.class);
|
FolderBrowserController.class);
|
||||||
|
|
||||||
controller.moveObjects(target, objectIds);
|
controller.moveObjects(target, objectIds);
|
||||||
}
|
}
|
||||||
|
|
@ -216,7 +218,7 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
|
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
final FolderBrowserController controller = cdiUtil.findBean(
|
final FolderBrowserController controller = cdiUtil.findBean(
|
||||||
FolderBrowserController.class);
|
FolderBrowserController.class);
|
||||||
|
|
||||||
controller.copyObjects(target, objectIds);
|
controller.copyObjects(target, objectIds);
|
||||||
}
|
}
|
||||||
|
|
@ -391,7 +393,7 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process(final FormSectionEvent event)
|
public void process(final FormSectionEvent event)
|
||||||
throws FormProcessException {
|
throws FormProcessException {
|
||||||
|
|
||||||
final PageState state = event.getPageState();
|
final PageState state = event.getPageState();
|
||||||
|
|
||||||
|
|
@ -410,7 +412,7 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process(final FormSectionEvent event) throws
|
public void process(final FormSectionEvent event) throws
|
||||||
FormProcessException {
|
FormProcessException {
|
||||||
|
|
||||||
final PageState state = event.getPageState();
|
final PageState state = event.getPageState();
|
||||||
|
|
||||||
|
|
@ -466,7 +468,7 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void validate(final FormSectionEvent event) throws
|
public void validate(final FormSectionEvent event) throws
|
||||||
FormProcessException {
|
FormProcessException {
|
||||||
|
|
||||||
final PageState state = event.getPageState();
|
final PageState state = event.getPageState();
|
||||||
final FormData data = event.getFormData();
|
final FormData data = event.getFormData();
|
||||||
|
|
@ -480,7 +482,7 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
}
|
}
|
||||||
|
|
||||||
private class TargetSelectorValidationListener implements
|
private class TargetSelectorValidationListener implements
|
||||||
FormValidationListener {
|
FormValidationListener {
|
||||||
|
|
||||||
public TargetSelectorValidationListener() {
|
public TargetSelectorValidationListener() {
|
||||||
//Nothing
|
//Nothing
|
||||||
|
|
@ -488,7 +490,7 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void validate(final FormSectionEvent event) throws
|
public void validate(final FormSectionEvent event) throws
|
||||||
FormProcessException {
|
FormProcessException {
|
||||||
|
|
||||||
final PageState state = event.getPageState();
|
final PageState state = event.getPageState();
|
||||||
|
|
||||||
|
|
@ -500,25 +502,25 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
final FormData data = event.getFormData();
|
final FormData data = event.getFormData();
|
||||||
if (target == null) {
|
if (target == null) {
|
||||||
data.addError(new GlobalizedMessage(
|
data.addError(new GlobalizedMessage(
|
||||||
"cms.ui.folder.need_select_target_folder",
|
"cms.ui.folder.need_select_target_folder",
|
||||||
CmsConstants.CMS_FOLDER_BUNDLE));
|
CmsConstants.CMS_FOLDER_BUNDLE));
|
||||||
//If the target is null, we can skip the rest of the checks
|
//If the target is null, we can skip the rest of the checks
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (target.equals(sourceFolderModel.getSelectedObject(state))) {
|
if (target.equals(sourceFolderModel.getSelectedObject(state))) {
|
||||||
data.addError(new GlobalizedMessage(
|
data.addError(new GlobalizedMessage(
|
||||||
"cms.ui.folder.not_within_same_folder",
|
"cms.ui.folder.not_within_same_folder",
|
||||||
CmsConstants.CMS_FOLDER_BUNDLE));
|
CmsConstants.CMS_FOLDER_BUNDLE));
|
||||||
}
|
}
|
||||||
|
|
||||||
// check create item permission
|
// check create item permission
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
final Shiro shiro = cdiUtil.findBean(Shiro.class);
|
final Shiro shiro = cdiUtil.findBean(Shiro.class);
|
||||||
final PermissionChecker permissionChecker = cdiUtil.findBean(
|
final PermissionChecker permissionChecker = cdiUtil.findBean(
|
||||||
PermissionChecker.class);
|
PermissionChecker.class);
|
||||||
if (!permissionChecker.isPermitted(
|
if (!permissionChecker.isPermitted(
|
||||||
ItemPrivileges.CREATE_NEW, target)) {
|
ItemPrivileges.CREATE_NEW, target)) {
|
||||||
data.addError("cms.ui.folder.no_permission_for_item",
|
data.addError("cms.ui.folder.no_permission_for_item",
|
||||||
CmsConstants.CMS_FOLDER_BUNDLE);
|
CmsConstants.CMS_FOLDER_BUNDLE);
|
||||||
}
|
}
|
||||||
|
|
@ -540,24 +542,24 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
|
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
final FolderRepository folderRepo = cdiUtil.findBean(
|
final FolderRepository folderRepo = cdiUtil.findBean(
|
||||||
FolderRepository.class);
|
FolderRepository.class);
|
||||||
final ContentItemRepository itemRepo = cdiUtil.findBean(
|
final ContentItemRepository itemRepo = cdiUtil.findBean(
|
||||||
ContentItemRepository.class);
|
ContentItemRepository.class);
|
||||||
final ContentItemManager itemManager = cdiUtil.findBean(
|
final ContentItemManager itemManager = cdiUtil.findBean(
|
||||||
ContentItemManager.class);
|
ContentItemManager.class);
|
||||||
final FolderBrowserController controller = cdiUtil.findBean(
|
final FolderBrowserController controller = cdiUtil.findBean(
|
||||||
FolderBrowserController.class);
|
FolderBrowserController.class);
|
||||||
final PermissionChecker permissionChecker = cdiUtil.findBean(
|
final PermissionChecker permissionChecker = cdiUtil.findBean(
|
||||||
PermissionChecker.class);
|
PermissionChecker.class);
|
||||||
|
|
||||||
final CcmObject object;
|
final CcmObject object;
|
||||||
final String name;
|
final String name;
|
||||||
if (objectId.startsWith("folder--")) {
|
if (objectId.startsWith(FOLDER_BROWSER_KEY_PREFIX_FOLDER)) {
|
||||||
final long folderId = Long.parseLong(objectId.substring(
|
final long folderId = Long.parseLong(objectId.substring(
|
||||||
"folder--".length()));
|
FOLDER_BROWSER_KEY_PREFIX_FOLDER.length()));
|
||||||
final Folder folder = folderRepo.findById(folderId).orElseThrow(
|
final Folder folder = folderRepo.findById(folderId).orElseThrow(
|
||||||
() -> new IllegalArgumentException(String.format(
|
() -> new IllegalArgumentException(String.format(
|
||||||
"No folder with id %d in database.", folderId)));
|
"No folder with id %d in database.", folderId)));
|
||||||
|
|
||||||
name = folder.getName();
|
name = folder.getName();
|
||||||
|
|
||||||
|
|
@ -568,13 +570,13 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
|
|
||||||
object = folder;
|
object = folder;
|
||||||
|
|
||||||
} else if (objectId.startsWith("item--")) {
|
} else if (objectId.startsWith(FOLDER_BROWSER_KEY_PREFIX_ITEM)) {
|
||||||
final long itemId = Long.parseLong(objectId.substring(
|
final long itemId = Long.parseLong(objectId.substring(
|
||||||
"item--".length()));
|
FOLDER_BROWSER_KEY_PREFIX_ITEM.length()));
|
||||||
final ContentItem item = itemRepo.findById(itemId).orElseThrow(
|
final ContentItem item = itemRepo.findById(itemId).orElseThrow(
|
||||||
() -> new IllegalArgumentException(String.format(
|
() -> new IllegalArgumentException(String.format(
|
||||||
"No content item with id %d in database.",
|
"No content item with id %d in database.",
|
||||||
itemId)));
|
itemId)));
|
||||||
|
|
||||||
name = item.getDisplayName();
|
name = item.getDisplayName();
|
||||||
|
|
||||||
|
|
@ -585,9 +587,11 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
object = item;
|
object = item;
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalArgumentException(String.format(
|
throw new IllegalArgumentException(String.format(
|
||||||
"Provided objectId '%s' does not start with 'folder--' "
|
"Provided objectId '%s' does not start with '%s' "
|
||||||
+ "or 'item--'.",
|
+ "or '%s'.",
|
||||||
objectId));
|
objectId,
|
||||||
|
FOLDER_BROWSER_KEY_PREFIX_FOLDER,
|
||||||
|
FOLDER_BROWSER_KEY_PREFIX_ITEM));
|
||||||
}
|
}
|
||||||
|
|
||||||
final long count = controller.countObjects(target, name);
|
final long count = controller.countObjects(target, name);
|
||||||
|
|
@ -599,7 +603,7 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
|
|
||||||
if (!(permissionChecker.isPermitted(
|
if (!(permissionChecker.isPermitted(
|
||||||
ItemPrivileges.DELETE, object))
|
ItemPrivileges.DELETE, object))
|
||||||
&& isMove(state)) {
|
&& isMove(state)) {
|
||||||
addErrorMessage(data,
|
addErrorMessage(data,
|
||||||
"cms.ui.folder.no_permission_for_item",
|
"cms.ui.folder.no_permission_for_item",
|
||||||
object.getDisplayName());
|
object.getDisplayName());
|
||||||
|
|
@ -628,7 +632,7 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
private class TargetSelectorSubmissionListener implements
|
private class TargetSelectorSubmissionListener implements
|
||||||
FormSubmissionListener {
|
FormSubmissionListener {
|
||||||
|
|
||||||
public TargetSelectorSubmissionListener() {
|
public TargetSelectorSubmissionListener() {
|
||||||
//Nothing
|
//Nothing
|
||||||
|
|
@ -636,15 +640,15 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void submitted(final FormSectionEvent event) throws
|
public void submitted(final FormSectionEvent event) throws
|
||||||
FormProcessException {
|
FormProcessException {
|
||||||
|
|
||||||
final PageState state = event.getPageState();
|
final PageState state = event.getPageState();
|
||||||
|
|
||||||
if (targetSelector.isCancelled(state)) {
|
if (targetSelector.isCancelled(state)) {
|
||||||
reset(state);
|
reset(state);
|
||||||
throw new FormProcessException(new GlobalizedMessage(
|
throw new FormProcessException(new GlobalizedMessage(
|
||||||
"cms.ui.folder.cancelled",
|
"cms.ui.folder.cancelled",
|
||||||
CmsConstants.CMS_FOLDER_BUNDLE));
|
CmsConstants.CMS_FOLDER_BUNDLE));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -688,25 +692,26 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
final Label label = (Label) event.getTarget();
|
final Label label = (Label) event.getTarget();
|
||||||
final int numberOfItems = getSources(state).length;
|
final int numberOfItems = getSources(state).length;
|
||||||
final Category folder = (Category) sourceFolderModel.
|
final Category folder = (Category) sourceFolderModel.
|
||||||
getSelectedObject(state);
|
getSelectedObject(state);
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
final CategoryManager categoryManager = cdiUtil.
|
final CategoryManager categoryManager = cdiUtil.
|
||||||
findBean(CategoryManager.class);
|
findBean(CategoryManager.class);
|
||||||
|
|
||||||
if (isMove(state)) {
|
if (isMove(state)) {
|
||||||
|
|
||||||
label.setLabel(new GlobalizedMessage(
|
label.setLabel(new GlobalizedMessage(
|
||||||
"cms.ui.folder.move",
|
"cms.ui.folder.move",
|
||||||
CmsConstants.CMS_FOLDER_BUNDLE,
|
CmsConstants.CMS_FOLDER_BUNDLE,
|
||||||
new Object[]{numberOfItems,
|
new Object[]{numberOfItems,
|
||||||
categoryManager.getCategoryPath(
|
categoryManager.getCategoryPath(
|
||||||
folder)}));
|
folder)}));
|
||||||
} else if (isCopy(state)) {
|
} else if (isCopy(state)) {
|
||||||
label.setLabel(new GlobalizedMessage(
|
label.setLabel(new GlobalizedMessage(
|
||||||
"cms.ui.folder.copy",
|
"cms.ui.folder.copy",
|
||||||
new Object[]{numberOfItems,
|
CMS_BUNDLE,
|
||||||
categoryManager.getCategoryPath(
|
new Object[]{numberOfItems,
|
||||||
folder)}));
|
categoryManager.getCategoryPath(
|
||||||
|
folder)}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -729,21 +734,22 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
|
|
||||||
// Set things up the first time the selector gets visible
|
// Set things up the first time the selector gets visible
|
||||||
public void expose(final PageState state) {
|
public void expose(final PageState state) {
|
||||||
final Category folder = (Category) sourceFolderModel.
|
final Folder folder = sourceFolderModel.getSelectedObject(state);
|
||||||
getSelectedObject(
|
|
||||||
state);
|
|
||||||
targetModel.clearSelection(state);
|
targetModel.clearSelection(state);
|
||||||
if (folder != null) {
|
if (folder != null) {
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
final ContentItemManager itemManager = cdiUtil.findBean(
|
final FolderManager folderManager = cdiUtil.findBean(
|
||||||
ContentItemManager.class);
|
FolderManager.class);
|
||||||
|
if (folder.getParentFolder() == null) {
|
||||||
//ToDo
|
folderTree.expand(Long.toString(folder.getObjectId()),
|
||||||
// final ItemCollection items = folder.getPathInfo(true);
|
state);
|
||||||
// while (items.next()) {
|
} else {
|
||||||
// folderTree.expand(items.getID().toString(), state);
|
final List<Folder> parents = folderManager.getParentFolders(
|
||||||
// }
|
folder);
|
||||||
// items.close();
|
parents.stream()
|
||||||
|
.map(parent -> Long.toString(parent.getObjectId()))
|
||||||
|
.forEach(folderId -> folderTree.expand(folderId, state));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -833,15 +839,15 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
// folderBrowser.setFilterForm(filterForm);
|
// folderBrowser.setFilterForm(filterForm);
|
||||||
folderBrowser.setFolderManipulator(FolderManipulator.this);
|
folderBrowser.setFolderManipulator(FolderManipulator.this);
|
||||||
paginator = new Paginator(
|
paginator = new Paginator(
|
||||||
new FolderBrowserPaginationModelBuilder(folderBrowser),
|
new FolderBrowserPaginationModelBuilder(folderBrowser),
|
||||||
CMSConfig.getConfig().getFolderBrowseListSize());
|
CMSConfig.getConfig().getFolderBrowseListSize());
|
||||||
folderBrowser.setPaginator(paginator);
|
folderBrowser.setPaginator(paginator);
|
||||||
panel.add(paginator);
|
panel.add(paginator);
|
||||||
panel.add(folderBrowser);
|
panel.add(folderBrowser);
|
||||||
|
|
||||||
LOGGER.debug("Adding filter form...");
|
LOGGER.debug("Adding filter form...");
|
||||||
filterForm = new FilterForm(new FolderBrowserFilterFormModelBuilder(
|
filterForm = new FilterForm(new FolderBrowserFilterFormModelBuilder(
|
||||||
folderBrowser));
|
folderBrowser));
|
||||||
FolderManipulator.this.add(filterForm);
|
FolderManipulator.this.add(filterForm);
|
||||||
|
|
||||||
checkboxGroup = new CheckboxGroup(sourcesParam);
|
checkboxGroup = new CheckboxGroup(sourcesParam);
|
||||||
|
|
@ -853,19 +859,19 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
group.addAction(container);
|
group.addAction(container);
|
||||||
|
|
||||||
container.add(new Label(new GlobalizedMessage(
|
container.add(new Label(new GlobalizedMessage(
|
||||||
"cms.ui.folder.edit_selection",
|
"cms.ui.folder.edit_selection",
|
||||||
CmsConstants.CMS_FOLDER_BUNDLE)));
|
CmsConstants.CMS_FOLDER_BUNDLE)));
|
||||||
actionSelect = new SingleSelect(actionParam);
|
actionSelect = new SingleSelect(actionParam);
|
||||||
actionSelect.addOption(
|
actionSelect.addOption(
|
||||||
new Option(COPY,
|
new Option(COPY,
|
||||||
new Label(new GlobalizedMessage(
|
new Label(new GlobalizedMessage(
|
||||||
"cms.ui.folder.copy.action",
|
"cms.ui.folder.copy.action",
|
||||||
CmsConstants.CMS_FOLDER_BUNDLE))));
|
CmsConstants.CMS_FOLDER_BUNDLE))));
|
||||||
actionSelect.addOption(
|
actionSelect.addOption(
|
||||||
new Option(MOVE,
|
new Option(MOVE,
|
||||||
new Label(new GlobalizedMessage(
|
new Label(new GlobalizedMessage(
|
||||||
"cms.ui.folder.move.action",
|
"cms.ui.folder.move.action",
|
||||||
CmsConstants.CMS_FOLDER_BUNDLE))));
|
CmsConstants.CMS_FOLDER_BUNDLE))));
|
||||||
//Publishing in the folder browser only works if threaded publishing is active
|
//Publishing in the folder browser only works if threaded publishing is active
|
||||||
// if (CMSConfig.getInstanceOf().getThreadedPublishing()) {
|
// if (CMSConfig.getInstanceOf().getThreadedPublishing()) {
|
||||||
// actionSelect.addOption(new Option(PUBLISH,
|
// actionSelect.addOption(new Option(PUBLISH,
|
||||||
|
|
@ -878,8 +884,8 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
container.add(actionSelect);
|
container.add(actionSelect);
|
||||||
submit = new Submit("Go",
|
submit = new Submit("Go",
|
||||||
new GlobalizedMessage(
|
new GlobalizedMessage(
|
||||||
"cms.ui.folder.go",
|
"cms.ui.folder.go",
|
||||||
CmsConstants.CMS_FOLDER_BUNDLE));
|
CmsConstants.CMS_FOLDER_BUNDLE));
|
||||||
container.add(submit);
|
container.add(submit);
|
||||||
|
|
||||||
// Add a new first column to the table
|
// Add a new first column to the table
|
||||||
|
|
@ -957,8 +963,8 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
panel = new BoxPanel(BoxPanel.HORIZONTAL);
|
panel = new BoxPanel(BoxPanel.HORIZONTAL);
|
||||||
|
|
||||||
final ActionLink allLink = new ActionLink(
|
final ActionLink allLink = new ActionLink(
|
||||||
new GlobalizedMessage("cms.ui.folder.filter.all",
|
new GlobalizedMessage("cms.ui.folder.filter.all",
|
||||||
CmsConstants.CMS_FOLDER_BUNDLE));
|
CmsConstants.CMS_FOLDER_BUNDLE));
|
||||||
allLink.addActionListener(new ActionListener() {
|
allLink.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -984,14 +990,14 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
// panel.add(link);
|
// panel.add(link);
|
||||||
// }
|
// }
|
||||||
panel.add(new Label(new GlobalizedMessage(
|
panel.add(new Label(new GlobalizedMessage(
|
||||||
"cms.ui.folder.filter",
|
"cms.ui.folder.filter",
|
||||||
CmsConstants.CMS_FOLDER_BUNDLE)));
|
CmsConstants.CMS_FOLDER_BUNDLE)));
|
||||||
filterField = new TextField(filterParam);
|
filterField = new TextField(filterParam);
|
||||||
panel.add(filterField);
|
panel.add(filterField);
|
||||||
panel.add(new Submit("filterFolderSubmit",
|
panel.add(new Submit("filterFolderSubmit",
|
||||||
new GlobalizedMessage(
|
new GlobalizedMessage(
|
||||||
"cms.ui.folder.filter_do",
|
"cms.ui.folder.filter_do",
|
||||||
CmsConstants.CMS_FOLDER_BUNDLE)));
|
CmsConstants.CMS_FOLDER_BUNDLE)));
|
||||||
|
|
||||||
add(panel);
|
add(panel);
|
||||||
|
|
||||||
|
|
@ -1003,28 +1009,28 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process(final FormSectionEvent event) throws
|
public void process(final FormSectionEvent event) throws
|
||||||
FormProcessException {
|
FormProcessException {
|
||||||
//Nothing
|
//Nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(final FormSectionEvent event) throws
|
public void init(final FormSectionEvent event) throws
|
||||||
FormProcessException {
|
FormProcessException {
|
||||||
//fse.getPageState().setValue(FolderManipulator.this.m_filter, null);
|
//fse.getPageState().setValue(FolderManipulator.this.m_filter, null);
|
||||||
//filterField.setValue(fse.getPageState(), null);
|
//filterField.setValue(fse.getPageState(), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void submitted(final FormSectionEvent event) throws
|
public void submitted(final FormSectionEvent event) throws
|
||||||
FormProcessException {
|
FormProcessException {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isVisible(PageState state) {
|
public boolean isVisible(PageState state) {
|
||||||
if (super.isVisible(state)
|
if (super.isVisible(state)
|
||||||
&& (modelBuilder.getFolderSize(state)
|
&& (modelBuilder.getFolderSize(state)
|
||||||
>= CMSConfig.getConfig().
|
>= CMSConfig.getConfig().
|
||||||
getFolderAtoZShowLimit())) {
|
getFolderAtoZShowLimit())) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -1056,7 +1062,7 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
private class FolderTreeCellRenderer implements TreeCellRenderer {
|
private class FolderTreeCellRenderer implements TreeCellRenderer {
|
||||||
|
|
||||||
private final RequestLocal invalidFoldersRequestLocal
|
private final RequestLocal invalidFoldersRequestLocal
|
||||||
= new RequestLocal();
|
= new RequestLocal();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Render the folders appropriately. The selected folder is a bold
|
* Render the folders appropriately. The selected folder is a bold
|
||||||
|
|
@ -1078,13 +1084,13 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
if (invalidFoldersRequestLocal.get(state) == null) {
|
if (invalidFoldersRequestLocal.get(state) == null) {
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
final FolderBrowserController controller = cdiUtil.findBean(
|
final FolderBrowserController controller = cdiUtil.findBean(
|
||||||
FolderBrowserController.class);
|
FolderBrowserController.class);
|
||||||
invalidFolders = controller.createInvalidTargetsList(
|
invalidFolders = controller.createInvalidTargetsList(
|
||||||
Arrays.asList(getSources(state)));
|
Arrays.asList(getSources(state)));
|
||||||
invalidFoldersRequestLocal.set(state, invalidFolders);
|
invalidFoldersRequestLocal.set(state, invalidFolders);
|
||||||
} else {
|
} else {
|
||||||
invalidFolders = (List<String>) invalidFoldersRequestLocal
|
invalidFolders = (List<String>) invalidFoldersRequestLocal
|
||||||
.get(state);
|
.get(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
final Label label = new Label(value.toString());
|
final Label label = new Label(value.toString());
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ import com.arsdigita.cms.CMS;
|
||||||
import com.arsdigita.ui.CcmObjectSelectionModel;
|
import com.arsdigita.ui.CcmObjectSelectionModel;
|
||||||
|
|
||||||
import org.libreccm.categorization.Category;
|
import org.libreccm.categorization.Category;
|
||||||
import org.librecms.CmsConstants;
|
|
||||||
import org.librecms.contentsection.ContentSection;
|
import org.librecms.contentsection.ContentSection;
|
||||||
import org.librecms.contentsection.Folder;
|
import org.librecms.contentsection.Folder;
|
||||||
|
|
||||||
|
|
@ -63,20 +62,6 @@ public class FolderSelectionModel extends CcmObjectSelectionModel<Folder> {
|
||||||
super.setSelectedKey(state, key);
|
super.setSelectedKey(state, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSelectedKey(final PageState state, final String key) {
|
|
||||||
if (!key.startsWith(CmsConstants.FOLDER_BROWSER_KEY_PREFIX_FOLDER)) {
|
|
||||||
throw new IllegalArgumentException(String.format(
|
|
||||||
"The string '%s' does not contain a folder id "
|
|
||||||
+ "(it does not start with '%s').",
|
|
||||||
key,
|
|
||||||
CmsConstants.FOLDER_BROWSER_KEY_PREFIX_FOLDER));
|
|
||||||
}
|
|
||||||
|
|
||||||
final long keyAsLong = Long.parseLong(key.substring(
|
|
||||||
CmsConstants.FOLDER_BROWSER_KEY_PREFIX_FOLDER.length()));
|
|
||||||
setSelectedKey(state, keyAsLong);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clear the selection by resetting it to the root folder id.
|
* Clear the selection by resetting it to the root folder id.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,13 @@
|
||||||
*/
|
*/
|
||||||
package com.arsdigita.cms.ui.folder;
|
package com.arsdigita.cms.ui.folder;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
import com.arsdigita.bebop.Tree;
|
import com.arsdigita.bebop.Tree;
|
||||||
|
|
||||||
|
import org.librecms.CmsConstants;
|
||||||
|
|
||||||
|
import static org.librecms.CmsConstants.*;
|
||||||
|
|
||||||
public class FolderTree extends Tree {
|
public class FolderTree extends Tree {
|
||||||
|
|
||||||
public FolderTree(final FolderSelectionModel folderSel) {
|
public FolderTree(final FolderSelectionModel folderSel) {
|
||||||
|
|
@ -27,4 +32,26 @@ public class FolderTree extends Tree {
|
||||||
setSelectionModel(folderSel);
|
setSelectionModel(folderSel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSelectedKey(final PageState state, final Object key) {
|
||||||
|
if (key instanceof String) {
|
||||||
|
final Long keyAsLong;
|
||||||
|
if (((String) key).startsWith(
|
||||||
|
FOLDER_BROWSER_KEY_PREFIX_FOLDER)) {
|
||||||
|
keyAsLong = Long.parseLong(((String) key).substring(
|
||||||
|
FOLDER_BROWSER_KEY_PREFIX_FOLDER.length()));
|
||||||
|
} else {
|
||||||
|
keyAsLong = Long.parseLong((String) key);
|
||||||
|
}
|
||||||
|
super.setSelectedKey(state, keyAsLong);
|
||||||
|
} else if (key instanceof Long) {
|
||||||
|
super.setSelectedKey(state, key);
|
||||||
|
} else {
|
||||||
|
//We now that a FolderSelectionModel only takes keys of type Long.
|
||||||
|
//Therefore we try to cast here
|
||||||
|
final Long keyAsLong = (Long) key;
|
||||||
|
super.setSelectedKey(state, keyAsLong);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue