CCM NG/ccm-cms: First part of new AssetPane
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4650 8810af33-2d31-482b-a856-94f89814c4df
Former-commit-id: d75fffae81
pull/2/head
parent
7f215e9dc7
commit
6f041f332e
|
|
@ -73,9 +73,29 @@ public class BrowsePane extends LayoutPanel implements Resettable {
|
||||||
public BrowsePane() {
|
public BrowsePane() {
|
||||||
|
|
||||||
/* The folder tree displayed on the left side / left column */
|
/* The folder tree displayed on the left side / left column */
|
||||||
tree = new BaseTree(new FolderTreeModelBuilder());
|
tree = new BaseTree(new FolderTreeModelBuilder() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Folder getRootFolder(final PageState state) {
|
||||||
|
final ContentSection section = CMS
|
||||||
|
.getContext()
|
||||||
|
.getContentSection();
|
||||||
|
return section.getRootDocumentsFolder();
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
selectionModel = tree.getSelectionModel();
|
selectionModel = tree.getSelectionModel();
|
||||||
folderModel = new FolderSelectionModel(selectionModel);
|
folderModel = new FolderSelectionModel(selectionModel) {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Long getRootFolderID(final PageState state) {
|
||||||
|
final ContentSection section = CMS
|
||||||
|
.getContext()
|
||||||
|
.getContentSection();
|
||||||
|
return section.getRootDocumentsFolder().getObjectId();
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
folderRequestLocal = new FolderRequestLocal(folderModel);
|
folderRequestLocal = new FolderRequestLocal(folderModel);
|
||||||
|
|
||||||
final SegmentedPanel left = new SegmentedPanel();
|
final SegmentedPanel left = new SegmentedPanel();
|
||||||
|
|
@ -157,11 +177,14 @@ public class BrowsePane extends LayoutPanel implements Resettable {
|
||||||
final PageState state = event.getPageState();
|
final PageState state = event.getPageState();
|
||||||
|
|
||||||
if (!selectionModel.isSelected(state)) {
|
if (!selectionModel.isSelected(state)) {
|
||||||
final String folder = state.getRequest().getParameter(
|
final String folder = state
|
||||||
ContentSectionPage.SET_FOLDER);
|
.getRequest()
|
||||||
|
.getParameter(ContentSectionPage.SET_FOLDER);
|
||||||
|
|
||||||
if (folder == null) {
|
if (folder == null) {
|
||||||
final Category root = CMS.getContext().getContentSection()
|
final Category root = CMS
|
||||||
|
.getContext()
|
||||||
|
.getContentSection()
|
||||||
.getRootDocumentsFolder();
|
.getRootDocumentsFolder();
|
||||||
final Long folderID = root.getObjectId();
|
final Long folderID = root.getObjectId();
|
||||||
|
|
||||||
|
|
@ -178,7 +201,7 @@ public class BrowsePane extends LayoutPanel implements Resettable {
|
||||||
}*/
|
}*/
|
||||||
selectionModel.setSelectedKey(state, folderID);
|
selectionModel.setSelectedKey(state, folderID);
|
||||||
} else {
|
} else {
|
||||||
selectionModel.setSelectedKey(state, folder);
|
selectionModel.setSelectedKey(state, Long.parseLong(folder));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -191,11 +214,9 @@ public class BrowsePane extends LayoutPanel implements Resettable {
|
||||||
public final void actionPerformed(final ActionEvent event) {
|
public final void actionPerformed(final ActionEvent event) {
|
||||||
final PageState state = event.getPageState();
|
final PageState state = event.getPageState();
|
||||||
|
|
||||||
if (Assert.isEnabled()) {
|
final Category root = CMS
|
||||||
Assert.isTrue(selectionModel.isSelected(state));
|
.getContext()
|
||||||
}
|
.getContentSection()
|
||||||
|
|
||||||
final Category root = CMS.getContext().getContentSection()
|
|
||||||
.getRootDocumentsFolder();
|
.getRootDocumentsFolder();
|
||||||
|
|
||||||
if (!root.equals(folderRequestLocal.getFolder(state))) {
|
if (!root.equals(folderRequestLocal.getFolder(state))) {
|
||||||
|
|
@ -207,27 +228,7 @@ public class BrowsePane extends LayoutPanel implements Resettable {
|
||||||
final List<Long> ancestorIds = controller.findAncestorIds(
|
final List<Long> ancestorIds = controller.findAncestorIds(
|
||||||
folderRequestLocal.getFolder(state));
|
folderRequestLocal.getFolder(state));
|
||||||
ancestorIds.forEach(id -> tree.expand(id.toString(), state));
|
ancestorIds.forEach(id -> tree.expand(id.toString(), state));
|
||||||
|
|
||||||
// CcmObject object = folderRequestLocal.getFolder(state);
|
|
||||||
//
|
|
||||||
// while (object != null) {
|
|
||||||
// if (object instanceof Category) {
|
|
||||||
// final Category category = (Category) object;
|
|
||||||
//
|
|
||||||
// if (category.getParentCategory() != null) {
|
|
||||||
// final Category result = category.getParentCategory();
|
|
||||||
// object = result;
|
|
||||||
// tree.expand(
|
|
||||||
// ((Long) object.getObjectId()).toString(),
|
|
||||||
// state);
|
|
||||||
// } else {
|
|
||||||
// object = null;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// } else {
|
|
||||||
// object = null;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ import org.librecms.contentsection.ContentItem;
|
||||||
import org.librecms.contentsection.ContentSection;
|
import org.librecms.contentsection.ContentSection;
|
||||||
|
|
||||||
import com.arsdigita.cms.dispatcher.CMSPage;
|
import com.arsdigita.cms.dispatcher.CMSPage;
|
||||||
|
import com.arsdigita.cms.ui.assets.AssetPane;
|
||||||
//ToDo NG import com.arsdigita.cms.ui.category.CategoryAdminPane;
|
//ToDo NG import com.arsdigita.cms.ui.category.CategoryAdminPane;
|
||||||
import com.arsdigita.cms.ui.cse.ContentSoonExpiredPane;
|
import com.arsdigita.cms.ui.cse.ContentSoonExpiredPane;
|
||||||
import com.arsdigita.cms.ui.folder.FolderAdminPane;
|
import com.arsdigita.cms.ui.folder.FolderAdminPane;
|
||||||
|
|
@ -121,6 +122,7 @@ public class ContentSectionPage extends CMSPage implements ActionListener {
|
||||||
private FolderAdminPane m_folderPane;
|
private FolderAdminPane m_folderPane;
|
||||||
private BrowsePane m_browsePane;
|
private BrowsePane m_browsePane;
|
||||||
private ItemSearch m_searchPane;
|
private ItemSearch m_searchPane;
|
||||||
|
private AssetPane m_assetPane;
|
||||||
//ToDo NG private ImagesPane m_imagesPane;
|
//ToDo NG private ImagesPane m_imagesPane;
|
||||||
private RoleAdminPane m_rolePane;
|
private RoleAdminPane m_rolePane;
|
||||||
private WorkflowAdminPane m_workflowPane;
|
private WorkflowAdminPane m_workflowPane;
|
||||||
|
|
@ -148,6 +150,7 @@ public class ContentSectionPage extends CMSPage implements ActionListener {
|
||||||
m_folderPane = getFolderAdminPane();
|
m_folderPane = getFolderAdminPane();
|
||||||
m_browsePane = getBrowsePane();
|
m_browsePane = getBrowsePane();
|
||||||
m_searchPane = getSearchPane();
|
m_searchPane = getSearchPane();
|
||||||
|
m_assetPane = getAssetPane();
|
||||||
//ToDo NG m_imagesPane = getImagesPane();
|
//ToDo NG m_imagesPane = getImagesPane();
|
||||||
m_rolePane = getRoleAdminPane();
|
m_rolePane = getRoleAdminPane();
|
||||||
m_workflowPane = getWorkflowAdminPane();
|
m_workflowPane = getWorkflowAdminPane();
|
||||||
|
|
@ -259,6 +262,15 @@ public class ContentSectionPage extends CMSPage implements ActionListener {
|
||||||
}
|
}
|
||||||
return m_searchPane;
|
return m_searchPane;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected AssetPane getAssetPane() {
|
||||||
|
if (m_assetPane == null) {
|
||||||
|
m_assetPane = new AssetPane();
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_assetPane;
|
||||||
|
}
|
||||||
|
|
||||||
// ToDo NG
|
// ToDo NG
|
||||||
// protected ImagesPane getImagesPane() {
|
// protected ImagesPane getImagesPane() {
|
||||||
// if (m_imagesPane == null) {
|
// if (m_imagesPane == null) {
|
||||||
|
|
@ -266,7 +278,6 @@ public class ContentSectionPage extends CMSPage implements ActionListener {
|
||||||
// }
|
// }
|
||||||
// return m_imagesPane;
|
// return m_imagesPane;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
protected RoleAdminPane getRoleAdminPane() {
|
protected RoleAdminPane getRoleAdminPane() {
|
||||||
if (m_rolePane == null) {
|
if (m_rolePane == null) {
|
||||||
m_rolePane = new RoleAdminPane();
|
m_rolePane = new RoleAdminPane();
|
||||||
|
|
@ -389,6 +400,7 @@ public class ContentSectionPage extends CMSPage implements ActionListener {
|
||||||
//tab(pane, "cms.ui.folders", getFolderAdminPane());
|
//tab(pane, "cms.ui.folders", getFolderAdminPane());
|
||||||
tab(pane, "cms.ui.browse", getBrowsePane());
|
tab(pane, "cms.ui.browse", getBrowsePane());
|
||||||
tab(pane, "cms.ui.search", getSearchPane());
|
tab(pane, "cms.ui.search", getSearchPane());
|
||||||
|
tab(pane, "cms.ui.assets", getAssetPane());
|
||||||
// ToDo NG replace with media tab tab(pane, "cms.ui.images", getImagesPane());
|
// ToDo NG replace with media tab tab(pane, "cms.ui.images", getImagesPane());
|
||||||
tab(pane, "cms.ui.roles", getRoleAdminPane());
|
tab(pane, "cms.ui.roles", getRoleAdminPane());
|
||||||
tab(pane, "cms.ui.workflows", getWorkflowAdminPane());
|
tab(pane, "cms.ui.workflows", getWorkflowAdminPane());
|
||||||
|
|
@ -433,7 +445,9 @@ public class ContentSectionPage extends CMSPage implements ActionListener {
|
||||||
// } else if (pane == m_imagesPane) {
|
// } else if (pane == m_imagesPane) {
|
||||||
// m_imagesPane.reset(state);
|
// m_imagesPane.reset(state);
|
||||||
// } else
|
// } else
|
||||||
if (pane == m_folderPane) {
|
if (pane == m_assetPane) {
|
||||||
|
m_assetPane.reset(state);
|
||||||
|
} else if (pane == m_folderPane) {
|
||||||
m_folderPane.reset(state);
|
m_folderPane.reset(state);
|
||||||
//ToDo NG } else if (pane == m_browsePane) {
|
//ToDo NG } else if (pane == m_browsePane) {
|
||||||
// m_browsePane.reset(state);
|
// m_browsePane.reset(state);
|
||||||
|
|
|
||||||
|
|
@ -18,10 +18,21 @@
|
||||||
*/
|
*/
|
||||||
package com.arsdigita.cms.ui.assets;
|
package com.arsdigita.cms.ui.assets;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.Container;
|
||||||
|
import com.arsdigita.bebop.Form;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public class AssetForm {
|
public class AssetForm extends Form {
|
||||||
|
|
||||||
|
public AssetForm(final String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public AssetForm(final String name, final Container container) {
|
||||||
|
super(name, container);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,356 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2017 LibreCCM Foundation.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package com.arsdigita.cms.ui.assets;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.ActionLink;
|
||||||
|
import com.arsdigita.bebop.FormProcessException;
|
||||||
|
import com.arsdigita.bebop.Label;
|
||||||
|
import com.arsdigita.bebop.Page;
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.bebop.Resettable;
|
||||||
|
import com.arsdigita.bebop.SegmentedPanel;
|
||||||
|
import com.arsdigita.bebop.SimpleContainer;
|
||||||
|
import com.arsdigita.bebop.SingleSelectionModel;
|
||||||
|
import com.arsdigita.bebop.Text;
|
||||||
|
import com.arsdigita.bebop.event.ActionEvent;
|
||||||
|
import com.arsdigita.bebop.event.ActionListener;
|
||||||
|
import com.arsdigita.bebop.event.FormProcessListener;
|
||||||
|
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||||
|
import com.arsdigita.bebop.event.FormSubmissionListener;
|
||||||
|
import com.arsdigita.bebop.event.PrintEvent;
|
||||||
|
import com.arsdigita.bebop.event.PrintListener;
|
||||||
|
import com.arsdigita.cms.CMS;
|
||||||
|
import com.arsdigita.cms.ui.BaseTree;
|
||||||
|
import com.arsdigita.cms.ui.folder.FolderCreateForm;
|
||||||
|
import com.arsdigita.cms.ui.folder.FolderEditorForm;
|
||||||
|
import com.arsdigita.cms.ui.folder.FolderRequestLocal;
|
||||||
|
import com.arsdigita.cms.ui.folder.FolderSelectionModel;
|
||||||
|
import com.arsdigita.cms.ui.folder.FolderTreeModelBuilder;
|
||||||
|
import com.arsdigita.cms.ui.folder.FolderTreeModelController;
|
||||||
|
import com.arsdigita.globalization.GlobalizedMessage;
|
||||||
|
import com.arsdigita.toolbox.ui.ActionGroup;
|
||||||
|
import com.arsdigita.toolbox.ui.LayoutPanel;
|
||||||
|
|
||||||
|
import org.libreccm.categorization.Category;
|
||||||
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
|
import org.librecms.CmsConstants;
|
||||||
|
import org.librecms.contentsection.ContentSection;
|
||||||
|
import org.librecms.contentsection.Folder;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
public class AssetPane extends LayoutPanel implements Resettable {
|
||||||
|
|
||||||
|
public static final String SET_FOLDER = "set_folder";
|
||||||
|
|
||||||
|
private final BaseTree tree;
|
||||||
|
private final SingleSelectionModel selectionModel;
|
||||||
|
private final FolderSelectionModel folderSelectionModel;
|
||||||
|
private final FolderRequestLocal folderRequestLocal;
|
||||||
|
|
||||||
|
private SegmentedPanel.Segment currentFolderSegment;
|
||||||
|
private SegmentedPanel.Segment browseSegment;
|
||||||
|
private SegmentedPanel.Segment newFolderSegment;
|
||||||
|
private SegmentedPanel.Segment editFolderSegment;
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public AssetPane() {
|
||||||
|
tree = new BaseTree(new FolderTreeModelBuilder() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Folder getRootFolder(final PageState state) {
|
||||||
|
final ContentSection section = CMS
|
||||||
|
.getContext()
|
||||||
|
.getContentSection();
|
||||||
|
return section.getRootAssetsFolder();
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
selectionModel = tree.getSelectionModel();
|
||||||
|
folderSelectionModel = new FolderSelectionModel(selectionModel) {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Long getRootFolderID(final PageState state) {
|
||||||
|
final ContentSection section = CMS
|
||||||
|
.getContext()
|
||||||
|
.getContentSection();
|
||||||
|
return section.getRootAssetsFolder().getObjectId();
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
folderRequestLocal = new FolderRequestLocal(folderSelectionModel);
|
||||||
|
|
||||||
|
final SegmentedPanel left = new SegmentedPanel();
|
||||||
|
setLeft(left);
|
||||||
|
|
||||||
|
final Label heading = new Label(
|
||||||
|
new GlobalizedMessage("cms.ui.folder_browser",
|
||||||
|
CmsConstants.CMS_BUNDLE));
|
||||||
|
left.addSegment(heading, tree);
|
||||||
|
|
||||||
|
// final Text placeholder = new Text("Placeholder");
|
||||||
|
setBody(createBrowserPane());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private SimpleContainer createBrowserPane() {
|
||||||
|
|
||||||
|
final SegmentedPanel panel = new SegmentedPanel();
|
||||||
|
|
||||||
|
currentFolderSegment = panel.addSegment();
|
||||||
|
currentFolderSegment.addHeader(new Text("Current folder"));
|
||||||
|
final Label currentFolderLabel = new Label();
|
||||||
|
currentFolderLabel.addPrintListener(new PrintListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void prepare(final PrintEvent event) {
|
||||||
|
final PageState state = event.getPageState();
|
||||||
|
final Label target = (Label) event.getTarget();
|
||||||
|
|
||||||
|
final long selectedId = Long.parseLong(selectionModel
|
||||||
|
.getSelectedKey(state).toString());
|
||||||
|
final long currentFolderId = folderSelectionModel
|
||||||
|
.getSelectedObject(state).getObjectId();
|
||||||
|
target.setLabel(String.format(
|
||||||
|
"selectedId = %d; currentFolderId = %d",
|
||||||
|
selectedId,
|
||||||
|
currentFolderId));
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
currentFolderSegment.add(currentFolderLabel);
|
||||||
|
|
||||||
|
browseSegment = panel.addSegment();
|
||||||
|
browseSegment.setIdAttr("folder-browse");
|
||||||
|
|
||||||
|
final ActionGroup actions = new ActionGroup();
|
||||||
|
browseSegment.add(actions);
|
||||||
|
|
||||||
|
final FolderCreateForm folderCreateForm = new FolderCreateForm(
|
||||||
|
"fcreat", folderSelectionModel);
|
||||||
|
folderCreateForm.addSubmissionListener(new FormSubmissionListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void submitted(final FormSectionEvent event)
|
||||||
|
throws FormProcessException {
|
||||||
|
|
||||||
|
final PageState state = event.getPageState();
|
||||||
|
if (event.getSource() == folderCreateForm
|
||||||
|
&& folderCreateForm.isCancelled(state)) {
|
||||||
|
browseMode(state);
|
||||||
|
throw new FormProcessException(new GlobalizedMessage(
|
||||||
|
"cms.ui.cancelled", CmsConstants.CMS_BUNDLE));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
folderCreateForm.addProcessListener(new FormProcessListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void process(final FormSectionEvent event)
|
||||||
|
throws FormProcessException {
|
||||||
|
|
||||||
|
final PageState state = event.getPageState();
|
||||||
|
final Object source = event.getSource();
|
||||||
|
if (source == folderCreateForm) {
|
||||||
|
browseMode(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
newFolderSegment = panel.addSegment(
|
||||||
|
new Label(new GlobalizedMessage("cms.ui.new_folder",
|
||||||
|
CmsConstants.CMS_BUNDLE)),
|
||||||
|
folderCreateForm);
|
||||||
|
|
||||||
|
final FolderEditorForm folderEditorForm = new FolderEditorForm(
|
||||||
|
"fedit", folderSelectionModel);
|
||||||
|
folderEditorForm.addSubmissionListener(new FormSubmissionListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void submitted(final FormSectionEvent event)
|
||||||
|
throws FormProcessException {
|
||||||
|
|
||||||
|
final PageState state = event.getPageState();
|
||||||
|
if (event.getSource() == folderEditorForm
|
||||||
|
&& folderEditorForm.isCancelled(state)) {
|
||||||
|
browseMode(state);
|
||||||
|
throw new FormProcessException(new GlobalizedMessage(
|
||||||
|
"cms.ui.cancelled", CmsConstants.CMS_BUNDLE));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
folderEditorForm.addProcessListener(new FormProcessListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void process(final FormSectionEvent event)
|
||||||
|
throws FormProcessException {
|
||||||
|
|
||||||
|
final PageState state = event.getPageState();
|
||||||
|
final Object source = event.getSource();
|
||||||
|
if (source == folderEditorForm) {
|
||||||
|
browseMode(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
editFolderSegment = panel.addSegment(
|
||||||
|
new Label(new GlobalizedMessage("cms.ui.edit_folder",
|
||||||
|
CmsConstants.CMS_BUNDLE)),
|
||||||
|
folderEditorForm);
|
||||||
|
|
||||||
|
final ActionLink createFolderAction = new ActionLink(
|
||||||
|
new Label(new GlobalizedMessage("cms.ui.new_folder",
|
||||||
|
CmsConstants.CMS_BUNDLE)));
|
||||||
|
createFolderAction.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(final ActionEvent event) {
|
||||||
|
final PageState state = event.getPageState();
|
||||||
|
final Object source = event.getSource();
|
||||||
|
if (source == createFolderAction) {
|
||||||
|
newFolderMode(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
actions.addAction(createFolderAction);
|
||||||
|
|
||||||
|
final ActionLink editFolderAction = new ActionLink(
|
||||||
|
new Label(new GlobalizedMessage("cms.ui.edit_folder",
|
||||||
|
CmsConstants.CMS_BUNDLE)));
|
||||||
|
editFolderAction.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(final ActionEvent event) {
|
||||||
|
final PageState state = event.getPageState();
|
||||||
|
final Object source = event.getSource();
|
||||||
|
if (source == editFolderAction) {
|
||||||
|
editFolderMode(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
actions.addAction(editFolderAction);
|
||||||
|
|
||||||
|
return panel;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void browseMode(final PageState state) {
|
||||||
|
browseSegment.setVisible(state, true);
|
||||||
|
newFolderSegment.setVisible(state, false);
|
||||||
|
editFolderSegment.setVisible(state, false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void newFolderMode(final PageState state) {
|
||||||
|
browseSegment.setVisible(state, false);
|
||||||
|
newFolderSegment.setVisible(state, true);
|
||||||
|
editFolderSegment.setVisible(state, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void editFolderMode(final PageState state) {
|
||||||
|
browseSegment.setVisible(state, false);
|
||||||
|
newFolderSegment.setVisible(state, false);
|
||||||
|
editFolderSegment.setVisible(state, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void register(final Page page) {
|
||||||
|
|
||||||
|
super.register(page);
|
||||||
|
|
||||||
|
page.addActionListener(new TreeListener());
|
||||||
|
page.addActionListener(new FolderListener());
|
||||||
|
|
||||||
|
page.setVisibleDefault(browseSegment, true);
|
||||||
|
page.setVisibleDefault(newFolderSegment, false);
|
||||||
|
page.setVisibleDefault(editFolderSegment, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void reset(final PageState state) {
|
||||||
|
|
||||||
|
super.reset(state);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private final class FolderListener implements ActionListener {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public void actionPerformed(final ActionEvent event) {
|
||||||
|
|
||||||
|
final PageState state = event.getPageState();
|
||||||
|
|
||||||
|
if (!selectionModel.isSelected(state)) {
|
||||||
|
final String folder = state
|
||||||
|
.getRequest()
|
||||||
|
.getParameter(SET_FOLDER);
|
||||||
|
|
||||||
|
if (folder == null) {
|
||||||
|
final Category root = CMS
|
||||||
|
.getContext()
|
||||||
|
.getContentSection()
|
||||||
|
.getRootAssetsFolder();
|
||||||
|
final Long folderId = root.getObjectId();
|
||||||
|
|
||||||
|
selectionModel.setSelectedKey(state, folderId);
|
||||||
|
} else {
|
||||||
|
selectionModel.setSelectedKey(state, Long.parseLong(folder));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private final class TreeListener implements ActionListener {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(final ActionEvent event) {
|
||||||
|
|
||||||
|
final PageState state = event.getPageState();
|
||||||
|
|
||||||
|
final Category root = CMS
|
||||||
|
.getContext()
|
||||||
|
.getContentSection()
|
||||||
|
.getRootAssetsFolder();
|
||||||
|
|
||||||
|
if (!root.equals(folderRequestLocal.getFolder(state))) {
|
||||||
|
// Expand the ancestor nodes of the currently
|
||||||
|
// selected node.
|
||||||
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
|
final FolderTreeModelController controller = cdiUtil.findBean(
|
||||||
|
FolderTreeModelController.class);
|
||||||
|
final List<Long> ancestorIds = controller.findAncestorIds(
|
||||||
|
folderRequestLocal.getFolder(state));
|
||||||
|
ancestorIds.forEach(id -> tree.expand(id.toString(), state));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -39,6 +39,7 @@ import com.arsdigita.toolbox.ui.SelectionPanel;
|
||||||
import org.libreccm.categorization.CategoryRepository;
|
import org.libreccm.categorization.CategoryRepository;
|
||||||
import org.libreccm.cdi.utils.CdiUtil;
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
import org.librecms.CmsConstants;
|
import org.librecms.CmsConstants;
|
||||||
|
import org.librecms.contentsection.Folder;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -57,7 +58,18 @@ public class FolderAdminPane extends SelectionPanel {
|
||||||
|
|
||||||
public FolderAdminPane() {
|
public FolderAdminPane() {
|
||||||
super(new Label(gz("cms.ui.folder.folders")),
|
super(new Label(gz("cms.ui.folder.folders")),
|
||||||
new FolderTreeModelBuilder());
|
new FolderTreeModelBuilder() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Folder getRootFolder(final PageState state) {
|
||||||
|
final ContentSection section = CMS
|
||||||
|
.getContext()
|
||||||
|
.getContentSection();
|
||||||
|
|
||||||
|
return section.getRootDocumentsFolder();
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
m_folder = new FolderRequestLocal(getSelectionModel());
|
m_folder = new FolderRequestLocal(getSelectionModel());
|
||||||
m_param = new BigDecimalParameter(FOLDER_PARAMETER);
|
m_param = new BigDecimalParameter(FOLDER_PARAMETER);
|
||||||
|
|
|
||||||
|
|
@ -51,11 +51,13 @@ public class FolderCreateForm extends FolderForm {
|
||||||
* Validates the form. Checks for name uniqueness.
|
* Validates the form. Checks for name uniqueness.
|
||||||
*
|
*
|
||||||
* @param event
|
* @param event
|
||||||
|
* @throws com.arsdigita.bebop.FormProcessException
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void validate(final FormSectionEvent event)
|
public void validate(final FormSectionEvent event)
|
||||||
throws FormProcessException {
|
throws FormProcessException {
|
||||||
|
|
||||||
final Folder folder = getCurrentFolder(event.getPageState());
|
final Folder folder = getCurrentFolder(event.getPageState());
|
||||||
final FormData data = event.getFormData();
|
final FormData data = event.getFormData();
|
||||||
final String name = data.getString(NAME);
|
final String name = data.getString(NAME);
|
||||||
|
|
|
||||||
|
|
@ -402,8 +402,7 @@ public abstract class FolderForm extends Form implements FormInitListener,
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
final protected Folder getCurrentFolder(final PageState state) {
|
final protected Folder getCurrentFolder(final PageState state) {
|
||||||
final Folder folder = (Folder) currentFolder
|
final Folder folder = currentFolder.getSelectedObject(state);
|
||||||
.getSelectedObject(state);
|
|
||||||
return folder;
|
return folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.CMS;
|
||||||
import com.arsdigita.globalization.GlobalizedMessage;
|
import com.arsdigita.globalization.GlobalizedMessage;
|
||||||
import com.arsdigita.toolbox.ui.ActionGroup;
|
import com.arsdigita.toolbox.ui.ActionGroup;
|
||||||
|
|
||||||
|
|
@ -80,6 +81,7 @@ import org.librecms.CmsConstants;
|
||||||
import org.librecms.contentsection.ContentItem;
|
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.ContentSection;
|
||||||
import org.librecms.contentsection.Folder;
|
import org.librecms.contentsection.Folder;
|
||||||
import org.librecms.contentsection.FolderManager;
|
import org.librecms.contentsection.FolderManager;
|
||||||
import org.librecms.contentsection.FolderRepository;
|
import org.librecms.contentsection.FolderRepository;
|
||||||
|
|
@ -719,7 +721,17 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
public TargetSelector() {
|
public TargetSelector() {
|
||||||
super("targetSel", new BoxPanel());
|
super("targetSel", new BoxPanel());
|
||||||
setMethod(GET);
|
setMethod(GET);
|
||||||
targetModel = new FolderSelectionModel("target");
|
targetModel = new FolderSelectionModel("target") {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Long getRootFolderID(final PageState state) {
|
||||||
|
final ContentSection section = CMS
|
||||||
|
.getContext()
|
||||||
|
.getContentSection();
|
||||||
|
return section.getRootDocumentsFolder().getObjectId();
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
folderTree = new FolderTree(targetModel);
|
folderTree = new FolderTree(targetModel);
|
||||||
folderTree.setCellRenderer(new FolderTreeCellRenderer());
|
folderTree.setCellRenderer(new FolderTreeCellRenderer());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ import org.librecms.contentsection.Folder;
|
||||||
* @author <a href="mailto:lutter@arsdigita.com">David Lutterkort</a>
|
* @author <a href="mailto:lutter@arsdigita.com">David Lutterkort</a>
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public class FolderSelectionModel extends CcmObjectSelectionModel<Folder> {
|
public abstract class FolderSelectionModel extends CcmObjectSelectionModel<Folder> {
|
||||||
|
|
||||||
public FolderSelectionModel(final String name) {
|
public FolderSelectionModel(final String name) {
|
||||||
super(Category.class.getName(), name);
|
super(Category.class.getName(), name);
|
||||||
|
|
@ -84,10 +84,11 @@ public class FolderSelectionModel extends CcmObjectSelectionModel<Folder> {
|
||||||
* @pre s != null
|
* @pre s != null
|
||||||
* @post return != null
|
* @post return != null
|
||||||
*/
|
*/
|
||||||
protected Long getRootFolderID(final PageState state) {
|
protected abstract Long getRootFolderID(final PageState state);
|
||||||
ContentSection sec = CMS.getContext().getContentSection();
|
// {
|
||||||
return sec.getRootDocumentsFolder().getObjectId();
|
// ContentSection sec = CMS.getContext().getContentSection();
|
||||||
}
|
// return sec.getRootDocumentsFolder().getObjectId();
|
||||||
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return true, since this selection model will always have a folder
|
* Return true, since this selection model will always have a folder
|
||||||
|
|
|
||||||
|
|
@ -20,15 +20,28 @@ package com.arsdigita.cms.ui.folder;
|
||||||
|
|
||||||
import com.arsdigita.bebop.PageState;
|
import com.arsdigita.bebop.PageState;
|
||||||
import com.arsdigita.bebop.Tree;
|
import com.arsdigita.bebop.Tree;
|
||||||
|
import com.arsdigita.cms.CMS;
|
||||||
|
|
||||||
import org.librecms.CmsConstants;
|
import org.librecms.contentsection.ContentSection;
|
||||||
|
import org.librecms.contentsection.Folder;
|
||||||
|
|
||||||
import static 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) {
|
||||||
super(new FolderTreeModelBuilder());
|
super(new FolderTreeModelBuilder() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Folder getRootFolder(final PageState state) {
|
||||||
|
final ContentSection section = CMS
|
||||||
|
.getContext()
|
||||||
|
.getContentSection();
|
||||||
|
|
||||||
|
return section.getRootDocumentsFolder();
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
setSelectionModel(folderSel);
|
setSelectionModel(folderSel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,8 @@ import org.libreccm.configuration.ConfigurationManager;
|
||||||
* @author <a href="mailto:lutter@arsdigita.com">David Lutterkort</a>
|
* @author <a href="mailto:lutter@arsdigita.com">David Lutterkort</a>
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public class FolderTreeModelBuilder extends LockableImpl
|
public abstract class FolderTreeModelBuilder
|
||||||
|
extends LockableImpl
|
||||||
implements TreeModelBuilder {
|
implements TreeModelBuilder {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -121,65 +122,32 @@ public class FolderTreeModelBuilder extends LockableImpl
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*return new DataQueryTreeModel(getRoot(state).getID(),
|
|
||||||
"com.arsdigita.cms.getRootFolder",
|
|
||||||
"com.arsdigita.cms.getSubFolders") {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Iterator getChildren(TreeNode node, PageState data) {
|
|
||||||
String nodeKey = node.getKey().toString();
|
|
||||||
|
|
||||||
// Always expand root node
|
|
||||||
if (nodeKey.equals(getRoot(data).getKey().toString()) && tree.
|
|
||||||
isCollapsed(nodeKey, data)) {
|
|
||||||
tree.expand(nodeKey, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tree.isCollapsed(nodeKey, data)) {
|
|
||||||
return Collections.EMPTY_LIST.iterator();
|
|
||||||
}
|
|
||||||
Party party = Kernel.getContext().getParty();
|
|
||||||
OID partyOID = null;
|
|
||||||
if (party == null) {
|
|
||||||
partyOID = new OID(User.BASE_DATA_OBJECT_TYPE,
|
|
||||||
PermissionManager.VIRTUAL_PUBLIC_ID);
|
|
||||||
} else {
|
|
||||||
partyOID = party.getOID();
|
|
||||||
}
|
|
||||||
UniversalPermissionDescriptor universalPermission
|
|
||||||
= new UniversalPermissionDescriptor(
|
|
||||||
SecurityManager.CMS_PREVIEW_ITEM_DESCRIPTOR,
|
|
||||||
partyOID);
|
|
||||||
if (PermissionService.checkPermission(universalPermission)) {
|
|
||||||
// the person is an admin so we just pass in the
|
|
||||||
// standard, non filtered query
|
|
||||||
return getDataQueryTreeIterator(
|
|
||||||
(DataQueryTreeNode) node,
|
|
||||||
"com.arsdigita.cms.getSubFolders");
|
|
||||||
} else {
|
|
||||||
// now we need to set the parameters
|
|
||||||
return new NewFolderBrowserIterator(
|
|
||||||
(DataQueryTreeNode) node,
|
|
||||||
partyOID);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * Return the root folder for the tree model in the current request.
|
||||||
|
// *
|
||||||
|
// * @param state represents the current request
|
||||||
|
// *
|
||||||
|
// * @return the root folder for the tree
|
||||||
|
// *
|
||||||
|
// */
|
||||||
|
//// protected Folder getRootFolder(final PageState state)
|
||||||
|
// throws IllegalStateException {
|
||||||
|
//
|
||||||
|
// final ContentSection section = CMS.getContext().getContentSection();
|
||||||
|
// return section.getRootDocumentsFolder();
|
||||||
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrn the root folder for the tree model in the current request.
|
* Return the root folder for the tree model in the current request.
|
||||||
*
|
*
|
||||||
* @param state represents the current request
|
* @param state represents the current request
|
||||||
*
|
*
|
||||||
* @return the root folder for the tree
|
* @return the root folder for the tree
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
protected Folder getRootFolder(final PageState state)
|
protected abstract Folder getRootFolder(final PageState state);
|
||||||
throws IllegalStateException {
|
|
||||||
|
|
||||||
final ContentSection section = CMS.getContext().getContentSection();
|
|
||||||
return section.getRootDocumentsFolder();
|
|
||||||
}
|
|
||||||
|
|
||||||
private class FolderTreeNode implements TreeNode {
|
private class FolderTreeNode implements TreeNode {
|
||||||
|
|
||||||
|
|
@ -219,98 +187,4 @@ public class FolderTreeModelBuilder extends LockableImpl
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*private class NewFolderBrowserIterator implements Iterator {
|
|
||||||
|
|
||||||
private DataQuery m_nodes;
|
|
||||||
|
|
||||||
public NewFolderBrowserIterator(DataQueryTreeNode node, OID partyOID) {
|
|
||||||
|
|
||||||
BigDecimal userID = (BigDecimal) partyOID.get("id");
|
|
||||||
|
|
||||||
String sql = ""
|
|
||||||
+ "\n select f.folder_id as id,"
|
|
||||||
+ "\n f.label as name,"
|
|
||||||
+ "\n count(sub.item_id) as nchild"
|
|
||||||
+ "\n from cms_folders f,"
|
|
||||||
+ "\n cms_items i"
|
|
||||||
+ "\n left join"
|
|
||||||
+ "\n (select i2.item_id, f2.label as name, i2.parent_id"
|
|
||||||
+ "\n from cms_folders f2,"
|
|
||||||
+ "\n cms_items i2"
|
|
||||||
+ "\n where f2.folder_id = i2.item_id) sub"
|
|
||||||
+ "\n on (sub.parent_id = i.item_id"
|
|
||||||
+ "\n and"
|
|
||||||
+ "\n exists (select 1"
|
|
||||||
+ "\n from dnm_object_1_granted_context dogc,"
|
|
||||||
+ "\n dnm_granted_context dgc,"
|
|
||||||
+ "\n dnm_permissions dp,"
|
|
||||||
+ "\n dnm_group_membership dgm"
|
|
||||||
+ "\n where dogc.pd_object_id = sub.item_id"
|
|
||||||
+ "\n and dogc.pd_context_id = dgc.pd_object_id"
|
|
||||||
+ "\n and dgc.pd_context_id = dp.pd_object_id"
|
|
||||||
+ "\n and dp.pd_grantee_id = dgm.pd_group_id"
|
|
||||||
+ "\n and dgm.pd_member_id in (-200,"
|
|
||||||
+ userID + ",-202)"
|
|
||||||
+ "\n and dp."
|
|
||||||
+ TREE_DESCRIPTOR.getColumnName() + " = '1'"
|
|
||||||
+ "\n ) )"
|
|
||||||
+ "\n where i.parent_id = " + node.getID()
|
|
||||||
+ "\n and f.folder_id = i.item_id"
|
|
||||||
+ "\n and exists ("
|
|
||||||
+ "\n select 1 as permission_p"
|
|
||||||
+ "\n from dnm_object_1_granted_context dogc,"
|
|
||||||
+ "\n dnm_granted_context dgc,"
|
|
||||||
+ "\n dnm_permissions dp,"
|
|
||||||
+ "\n dnm_group_membership dgm"
|
|
||||||
+ "\n where dogc.pd_context_id = dgc.pd_object_id"
|
|
||||||
+ "\n and dgc.pd_context_id = dp.pd_object_id"
|
|
||||||
+ "\n and dgm.pd_member_id in (-200,"
|
|
||||||
+ userID + ",-202)"
|
|
||||||
+ "\n and dp.pd_grantee_id = dgm.pd_group_id"
|
|
||||||
+ "\n and dogc.pd_object_id = f.folder_id"
|
|
||||||
+ "\n and dp." + TREE_DESCRIPTOR.
|
|
||||||
getColumnName() + " = '1' )"
|
|
||||||
+ "\n group by f.label, f.folder_id"
|
|
||||||
+ "\n order by lower(f.label)";
|
|
||||||
|
|
||||||
if (s_log.isDebugEnabled()) {
|
|
||||||
s_log.debug("Custom SQL: \n" + sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_nodes = new GenericDataQuery(
|
|
||||||
SessionManager.getSession(),
|
|
||||||
sql,
|
|
||||||
new String[]{"id", "name", "nchild"});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object next() {
|
|
||||||
BigDecimal id = new BigDecimal(0);
|
|
||||||
try {
|
|
||||||
// this appears to be the only portable way to dig numbers out
|
|
||||||
// of the result set
|
|
||||||
id = new BigDecimal(m_nodes.get("id").toString());
|
|
||||||
} catch (NumberFormatException nfe) {
|
|
||||||
}
|
|
||||||
String name = m_nodes.get("name").toString();
|
|
||||||
BigDecimal count = new BigDecimal(0);
|
|
||||||
try {
|
|
||||||
count = new BigDecimal(m_nodes.get("nchild").toString());
|
|
||||||
} catch (NumberFormatException nfe) {
|
|
||||||
}
|
|
||||||
|
|
||||||
return new DataQueryTreeNode(id, name, count.intValue() > 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void remove() {
|
|
||||||
throw new UnsupportedOperationException(
|
|
||||||
"cannot remove nodes via iterator");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasNext() {
|
|
||||||
return m_nodes.next();
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,17 +45,7 @@ import static org.librecms.CmsConstants.*;
|
||||||
public class SideNote extends Asset implements Serializable {
|
public class SideNote extends Asset implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = -4566222634780521726L;
|
private static final long serialVersionUID = -4566222634780521726L;
|
||||||
|
|
||||||
@Embedded
|
|
||||||
@AssociationOverride(
|
|
||||||
name = "values",
|
|
||||||
joinTable = @JoinTable(name = "SIDE_NOTE_TITLES",
|
|
||||||
schema = DB_SCHEMA,
|
|
||||||
joinColumns = {
|
|
||||||
@JoinColumn(name = "SIDE_NOTE_ID")
|
|
||||||
}))
|
|
||||||
private LocalizedString title;
|
|
||||||
|
|
||||||
@Embedded
|
@Embedded
|
||||||
@AssociationOverride(
|
@AssociationOverride(
|
||||||
name = "values",
|
name = "values",
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
DROP TABLE ccm_cms.side_note_titles_aud;
|
||||||
|
|
||||||
|
DROP TABLE ccm_cms.side_note_titles;
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
DROP TABLE ccm_cms.side_note_titles_aud;
|
||||||
|
|
||||||
|
DROP TABLE ccm_cms.side_note_titles;
|
||||||
|
|
@ -244,3 +244,4 @@ cms.ui.type.lifecycle.select=Select the default lifecycle
|
||||||
cms.ui.type.workflow.select=Select default workflow
|
cms.ui.type.workflow.select=Select default workflow
|
||||||
cms.ui.type.select=Select Content Type
|
cms.ui.type.select=Select Content Type
|
||||||
cms.ui.type.select.none=There are no available content types to select
|
cms.ui.type.select.none=There are no available content types to select
|
||||||
|
cms.ui.assets=Assets
|
||||||
|
|
|
||||||
|
|
@ -243,3 +243,4 @@ cms.ui.type.lifecycle.select=Voreingestellten Ver\u00f6ffentlichungszyklus ausw\
|
||||||
cms.ui.type.workflow.select=Voreingestellten Arbeitsablauf ausw\u00e4hlen
|
cms.ui.type.workflow.select=Voreingestellten Arbeitsablauf ausw\u00e4hlen
|
||||||
cms.ui.type.select=Dolkumententype ausw\u00e4hlen
|
cms.ui.type.select=Dolkumententype ausw\u00e4hlen
|
||||||
cms.ui.type.select.none=Keine verf\u00fcgbaren Dokumententypen
|
cms.ui.type.select.none=Keine verf\u00fcgbaren Dokumententypen
|
||||||
|
cms.ui.assets=Medien & Daten
|
||||||
|
|
|
||||||
|
|
@ -202,3 +202,4 @@ cms.ui.type.lifecycle.select=Select the default lifecycle
|
||||||
cms.ui.type.workflow.select=Select default workflow
|
cms.ui.type.workflow.select=Select default workflow
|
||||||
cms.ui.type.select=Select Content Type
|
cms.ui.type.select=Select Content Type
|
||||||
cms.ui.type.select.none=There are no available content types to select
|
cms.ui.type.select.none=There are no available content types to select
|
||||||
|
cms.ui.assets=Assets
|
||||||
|
|
|
||||||
|
|
@ -802,23 +802,6 @@ create schema CCM_CORE;
|
||||||
primary key (REV, SIDE_NOTE_ID, LOCALIZED_VALUE, LOCALE)
|
primary key (REV, SIDE_NOTE_ID, LOCALIZED_VALUE, LOCALE)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table CCM_CMS.SIDE_NOTE_TITLES (
|
|
||||||
SIDE_NOTE_ID bigint not null,
|
|
||||||
LOCALIZED_VALUE longvarchar,
|
|
||||||
LOCALE varchar(255) not null,
|
|
||||||
primary key (SIDE_NOTE_ID, LOCALE)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table CCM_CMS.SIDE_NOTE_TITLES_AUD (
|
|
||||||
REV integer not null,
|
|
||||||
SIDE_NOTE_ID bigint not null,
|
|
||||||
LOCALIZED_VALUE longvarchar not null,
|
|
||||||
LOCALE varchar(255) not null,
|
|
||||||
REVTYPE tinyint,
|
|
||||||
REVEND integer,
|
|
||||||
primary key (REV, SIDE_NOTE_ID, LOCALIZED_VALUE, LOCALE)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table CCM_CMS.SIDE_NOTES (
|
create table CCM_CMS.SIDE_NOTES (
|
||||||
OBJECT_ID bigint not null,
|
OBJECT_ID bigint not null,
|
||||||
primary key (OBJECT_ID)
|
primary key (OBJECT_ID)
|
||||||
|
|
|
||||||
|
|
@ -803,23 +803,6 @@ create schema CCM_CORE;
|
||||||
primary key (REV, SIDE_NOTE_ID, LOCALIZED_VALUE, LOCALE)
|
primary key (REV, SIDE_NOTE_ID, LOCALIZED_VALUE, LOCALE)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table CCM_CMS.SIDE_NOTE_TITLES (
|
|
||||||
SIDE_NOTE_ID int8 not null,
|
|
||||||
LOCALIZED_VALUE text,
|
|
||||||
LOCALE varchar(255) not null,
|
|
||||||
primary key (SIDE_NOTE_ID, LOCALE)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table CCM_CMS.SIDE_NOTE_TITLES_AUD (
|
|
||||||
REV int4 not null,
|
|
||||||
SIDE_NOTE_ID int8 not null,
|
|
||||||
LOCALIZED_VALUE text not null,
|
|
||||||
LOCALE varchar(255) not null,
|
|
||||||
REVTYPE int2,
|
|
||||||
REVEND int4,
|
|
||||||
primary key (REV, SIDE_NOTE_ID, LOCALIZED_VALUE, LOCALE)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table CCM_CMS.SIDE_NOTES (
|
create table CCM_CMS.SIDE_NOTES (
|
||||||
OBJECT_ID int8 not null,
|
OBJECT_ID int8 not null,
|
||||||
primary key (OBJECT_ID)
|
primary key (OBJECT_ID)
|
||||||
|
|
|
||||||
|
|
@ -803,23 +803,6 @@ create schema CCM_CORE;
|
||||||
primary key (REV, SIDE_NOTE_ID, LOCALIZED_VALUE, LOCALE)
|
primary key (REV, SIDE_NOTE_ID, LOCALIZED_VALUE, LOCALE)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table CCM_CMS.SIDE_NOTE_TITLES (
|
|
||||||
SIDE_NOTE_ID bigint not null,
|
|
||||||
LOCALIZED_VALUE longvarchar,
|
|
||||||
LOCALE varchar(255) not null,
|
|
||||||
primary key (SIDE_NOTE_ID, LOCALE)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table CCM_CMS.SIDE_NOTE_TITLES_AUD (
|
|
||||||
REV integer not null,
|
|
||||||
SIDE_NOTE_ID bigint not null,
|
|
||||||
LOCALIZED_VALUE longvarchar not null,
|
|
||||||
LOCALE varchar(255) not null,
|
|
||||||
REVTYPE tinyint,
|
|
||||||
REVEND integer,
|
|
||||||
primary key (REV, SIDE_NOTE_ID, LOCALIZED_VALUE, LOCALE)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table CCM_CMS.SIDE_NOTES (
|
create table CCM_CMS.SIDE_NOTES (
|
||||||
OBJECT_ID bigint not null,
|
OBJECT_ID bigint not null,
|
||||||
primary key (OBJECT_ID)
|
primary key (OBJECT_ID)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue