You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by vk...@apache.org on 2009/03/27 01:15:59 UTC
svn commit: r758939 [2/3] - in
/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets:
site/ wicket/component/
Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/site/PortalSiteManager.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/site/PortalSiteManager.java?rev=758939&r1=758938&r2=758939&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/site/PortalSiteManager.java (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/site/PortalSiteManager.java Fri Mar 27 00:15:58 2009
@@ -17,12 +17,17 @@
package org.apache.jetspeed.portlets.site;
import java.io.BufferedOutputStream;
+import java.io.DataOutputStream;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Enumeration;
@@ -32,7 +37,6 @@
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
-import javax.portlet.ActionRequest;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.swing.tree.DefaultMutableTreeNode;
@@ -46,12 +50,18 @@
import org.apache.jetspeed.om.folder.Folder;
import org.apache.jetspeed.om.folder.FolderNotFoundException;
import org.apache.jetspeed.om.folder.InvalidFolderException;
+import org.apache.jetspeed.om.folder.MenuDefinition;
+import org.apache.jetspeed.om.folder.MenuExcludeDefinition;
+import org.apache.jetspeed.om.folder.MenuIncludeDefinition;
+import org.apache.jetspeed.om.folder.MenuOptionsDefinition;
+import org.apache.jetspeed.om.folder.MenuSeparatorDefinition;
import org.apache.jetspeed.om.page.Fragment;
import org.apache.jetspeed.om.page.Link;
import org.apache.jetspeed.om.page.Page;
import org.apache.jetspeed.om.page.SecurityConstraintsDef;
import org.apache.jetspeed.om.portlet.LocalizedField;
import org.apache.jetspeed.page.FolderNotUpdatedException;
+import org.apache.jetspeed.page.LinkNotUpdatedException;
import org.apache.jetspeed.page.PageManager;
import org.apache.jetspeed.page.PageNotFoundException;
import org.apache.jetspeed.page.PageNotUpdatedException;
@@ -59,12 +69,18 @@
import org.apache.jetspeed.page.document.Node;
import org.apache.jetspeed.page.document.NodeException;
import org.apache.jetspeed.page.document.UnsupportedDocumentTypeException;
+import org.apache.jetspeed.portalsite.MenuElement;
import org.apache.jetspeed.portlets.security.users.WicketUserAdmin;
+import org.apache.jetspeed.portlets.site.SiteTreeNode.FileType;
+import org.apache.jetspeed.portlets.wicket.component.DynamicResourceLink;
import org.apache.jetspeed.portlets.wicket.component.JavascriptEventConfirmation;
+import org.apache.jetspeed.portlets.wicket.component.ResourceProvider;
import org.apache.jetspeed.security.SecurityException;
import org.apache.wicket.Component;
import org.apache.wicket.ResourceReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.IAjaxCallDecorator;
+import org.apache.wicket.ajax.calldecorator.AjaxPreprocessingCallDecorator;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.extensions.ajax.markup.html.autocomplete.AutoCompleteTextField;
@@ -80,10 +96,13 @@
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.FormComponent;
+import org.apache.wicket.markup.html.form.HiddenField;
+import org.apache.wicket.markup.html.form.ListMultipleChoice;
import org.apache.wicket.markup.html.form.RequiredTextField;
import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.form.upload.FileUpload;
+import org.apache.wicket.markup.html.form.upload.FileUploadField;
import org.apache.wicket.markup.html.image.Image;
-import org.apache.wicket.markup.html.link.ExternalLink;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
@@ -108,7 +127,6 @@
{
// protected final Log log = LogFactory.getLog(this.getClass());
// components
- protected PageManager pageManager;
protected PortletRegistry registry;
protected DecorationFactory decorationFactory;
// session
@@ -118,23 +136,25 @@
public final static String FOLDERS = "folders";
public final static String JSROOT = "jsroot";
public static final String ALL_SECURITY_REFS = "allSecurityRefs";
- protected PageManager castorPageManager;
private DefaultTreeModel treeModel;
private AjaxTabbedPanel tabPanel;
private DefaultTreeModel treeRoot;
private JetspeedDocument document;
+ private MenuDefinition menuDefinition;
private static List<String> pageDecoraters;
private static List<String> portletDecorators;
private static List<String> pageThemes;
private static List<String> constraintsDefs;
private static List<String> targetList;
- private static String ADD_ACTION = "add";
- private static String REMOVE_ACTION = "remove";
- private static String SAVE_ACTION = "save";
+ private final static String ADD_ACTION = "add";
+ private final static String REMOVE_ACTION = "remove";
+ private final static String SAVE_ACTION = "save";
+ private final static String INCLUDES = "includes";
+ private final static String EXCLUDES = "excludes";
+ private final static String FOLDER_NODE_TYPE = "folder";
+ private final static String PAGE_NODE_TYPE = "page";
+ private List menuOptions = new ArrayList();
String userFolder;
- private AjaxLink addFolder;
- private AjaxLink addPage;
- private AjaxLink addLink;
public PortalSiteManager()
{
@@ -147,8 +167,6 @@
tabPanel = new AjaxTabbedPanel("tabs", tabList);
tabPanel.setOutputMarkupId(true);
add(siteTree);
- final ModalWindow metaDataModalWindow;
- add(metaDataModalWindow = new ModalWindow("modalwindow"));
Form treeForm = new Form("treeForm");
treeForm.add(new AutoCompleteTextField<String>("userFolder", new PropertyModel(this, "userFolder"))
{
@@ -203,42 +221,6 @@
((LinkTree) getPage().get("siteTree")).getTreeState().expandNode(populateTree());
}
});
- addFolder = new AjaxLink("addFolder")
- {
- @Override
- public void onClick(AjaxRequestTarget target)
- {
- metaDataModalWindow.setContent(new AddFolderPanel(metaDataModalWindow.getContentId()));
- metaDataModalWindow.show(target);
- }
- };
- treeForm.add(addFolder);
- addPage = new AjaxLink("addPage")
- {
- @Override
- public void onClick(AjaxRequestTarget target)
- {
- metaDataModalWindow.setContent(new AddPagePanel(metaDataModalWindow.getContentId()));
- metaDataModalWindow.show(target);
- }
- };
- treeForm.add(addPage);
- addLink = new AjaxLink("addLink")
- {
- @Override
- public void onClick(AjaxRequestTarget target)
- {
- metaDataModalWindow.setContent(new AddLinkPanel(metaDataModalWindow.getContentId()));
- metaDataModalWindow.show(target);
- }
- };
- treeForm.add(addLink);
- addFolder.setVisibilityAllowed(true);
- addPage.setVisibilityAllowed(true);
- addLink.setVisibilityAllowed(true);
- addFolder.setVisible(false);
- addPage.setVisible(false);
- addLink.setVisible(false);
add(treeForm);
add(tabPanel);
controlTabs();
@@ -295,22 +277,7 @@
{
tree.getTreeState().collapseNode(treeNode);
}
- if (siteNode.getDocType() == SiteTreeNode.FileType.Folder)
- {
- addFolder.setVisible(true);
- addPage.setVisible(true);
- addLink.setVisible(true);
- }
- else
- {
- addFolder.setVisible(false);
- addPage.setVisible(false);
- addLink.setVisible(false);
- }
target.addComponent(tabPanel);
- target.addComponent(addFolder);
- target.addComponent(addLink);
- target.addComponent(addPage);
}
@Override
@@ -344,8 +311,6 @@
}
}
-
-
protected class InformationTab extends BasePanel
{
private static final long serialVersionUID = 3039163446419682350L;
@@ -403,6 +368,41 @@
infoForm.add(defaultPageField);
defaultPageLabel.setVisibilityAllowed(true);
defaultPageField.setVisibilityAllowed(true);
+ final ModalWindow metaDataModalWindow;
+ add(metaDataModalWindow = new ModalWindow("modalwindow"));
+ AjaxLink addFolder = new AjaxLink("addFolder")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ metaDataModalWindow.setContent(new AddFolderPanel(metaDataModalWindow.getContentId()));
+ metaDataModalWindow.show(target);
+ }
+ };
+ add(addFolder);
+ AjaxLink addPage = new AjaxLink("addPage")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ metaDataModalWindow.setContent(new AddPagePanel(metaDataModalWindow.getContentId()));
+ metaDataModalWindow.show(target);
+ }
+ };
+ add(addPage);
+ AjaxLink addLink = new AjaxLink("addLink")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ metaDataModalWindow.setContent(new AddLinkPanel(metaDataModalWindow.getContentId()));
+ metaDataModalWindow.show(target);
+ }
+ };
+ add(addLink);
+ addFolder.setVisibilityAllowed(true);
+ addPage.setVisibilityAllowed(true);
+ addLink.setVisibilityAllowed(true);
SiteTreeNode node = getUserSelectedNode();
if (node.getDocType() == SiteTreeNode.FileType.Folder)
{
@@ -410,6 +410,9 @@
urlField.setVisible(false);
targetLabel.setVisible(false);
targetField.setVisible(false);
+ addFolder.setVisible(true);
+ addPage.setVisible(true);
+ addLink.setVisible(true);
}
else if (node.getDocType() == SiteTreeNode.FileType.Page)
{
@@ -419,12 +422,15 @@
urlField.setVisible(false);
targetLabel.setVisible(false);
targetField.setVisible(false);
+ addFolder.setVisible(false);
+ addPage.setVisible(false);
+ addLink.setVisible(false);
}
else if (node.getDocType() == SiteTreeNode.FileType.Link)
{
defaultPageLabel.setVisible(false);
defaultPageField.setVisible(false);
- targetLabel.setVisible(false);
+ targetLabel.setVisible(true);
defaultPageField.setVisible(false);
pageDecoratorLabel.setVisible(false);
decoratorsList.setVisible(false);
@@ -432,6 +438,9 @@
portletDecoratorsList.setVisible(false);
themeField.setVisible(false);
themeLabel.setVisible(false);
+ addFolder.setVisible(false);
+ addPage.setVisible(false);
+ addLink.setVisible(false);
}
infoForm.add(new AjaxButton("view", infoForm)
{
@@ -447,6 +456,11 @@
protected void onSubmit(AjaxRequestTarget target, Form form)
{
excuteAction(getDocument(), "remove");
+ DefaultMutableTreeNode node = getSelectedNode();
+ DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode) node.getParent();
+ parentNode.remove(node);
+ LinkTree tree = (PortalTree) getPage().get("siteTree");
+ tree.updateTree(target);
}
}.add(new JavascriptEventConfirmation("onclick", "are you sure?")));
infoForm.add(new AjaxButton("save", infoForm)
@@ -458,10 +472,25 @@
}
});
add(infoForm);
+ add(new AjaxButton("copy", infoForm)
+ {
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form form)
+ {
+ // TODO
+ }
+ });
+ add(new AjaxButton("move", infoForm)
+ {
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form form)
+ {
+ // TODO
+ }
+ });
}
}
-
protected class SecurityTab extends BasePanel
{
private static final long serialVersionUID = 7948533482848224251L;
@@ -485,7 +514,7 @@
@Override
public void onClick(AjaxRequestTarget target)
{
- metaDataModalWindow.setContent(new SecurityTabWindowPanel(metaDataModalWindow.getContentId(), constraints,ajaxPanel));
+ metaDataModalWindow.setContent(new SecurityTabWindowPanel(metaDataModalWindow.getContentId(), constraints, ajaxPanel));
metaDataModalWindow.show(target);
target.addComponent(ajaxPanel);
}
@@ -506,7 +535,7 @@
@Override
public void onClick(AjaxRequestTarget target)
{
- metaDataModalWindow.setContent(new SecurityTabWindowPanel(metaDataModalWindow.getContentId(), "",ajaxPanel));
+ metaDataModalWindow.setContent(new SecurityTabWindowPanel(metaDataModalWindow.getContentId(), "", ajaxPanel));
metaDataModalWindow.show(target);
}
});
@@ -617,18 +646,221 @@
}
}
+ protected class OptionsWindow extends WindowPanel
+ {
+ private static final long serialVersionUID = -3223669376958653554L;
+ private MenuOptionsDefinition optionsDefinition;
+
+ /**
+ * @return the optionsDefinition
+ */
+ public MenuOptionsDefinition getOptionsDefinition()
+ {
+ return optionsDefinition;
+ }
+
+ /**
+ * @param optionsDefinition
+ * the optionsDefinition to set
+ */
+ public void setOptionsDefinition(MenuOptionsDefinition optionsDefinition)
+ {
+ this.optionsDefinition = optionsDefinition;
+ }
+
+ public OptionsWindow(String id, MenuDefinition definition, MenuOptionsDefinition options, final WebMarkupContainer markUp)
+ {
+ super(id);
+ this.optionsDefinition = (MenuOptionsDefinition) copyMenuElement(getNodeType(), options);
+ final MenuOptionsDefinition optionDef = options;
+ final MenuDefinition def = definition;
+ final Form menuform = new Form("menuForm");
+ menuform.add(new TextField("optionsField", new PropertyModel(this, "optionsDefinition.options")));
+ menuform.add(new TextField("depthField", new PropertyModel(this, "optionsDefinition.depth")));
+ menuform.add(new CheckBox("pathField", new PropertyModel(this, "optionsDefinition.paths")));
+ menuform.add(new CheckBox("regExpField", new PropertyModel(this, "optionsDefinition.regexp")));
+ menuform.add(new TextField("profileField", new PropertyModel(this, "optionsDefinition.profile")));
+ menuform.add(new TextField("skinField", new PropertyModel(this, "optionsDefinition.skin")));
+ menuform.add(new TextField("orderField", new PropertyModel(this, "optionsDefinition.order")));
+ menuform.add(new AjaxButton("save")
+ {
+ protected void onSubmit(AjaxRequestTarget target, Form menuform)
+ {
+ menuActions(SAVE_ACTION, def, optionDef , getOptionsDefinition());
+ ((ModalWindow) OptionsWindow.this.getParent()).close(target);
+ target.addComponent(markUp);
+ }
+ });
+ add(menuform);
+ }
+ }
+
+ protected class IncludesWindow extends WindowPanel
+ {
+ private static final long serialVersionUID = -3223669376958653554L;
+ private MenuIncludeDefinition includes;
+
+ /**
+ * @return the includes
+ */
+ public MenuIncludeDefinition getIncludes()
+ {
+ return includes;
+ }
+
+ /**
+ * @param includes
+ * the includes to set
+ */
+ public void setIncludes(MenuIncludeDefinition includes)
+ {
+ this.includes = includes;
+ }
+
+ public IncludesWindow(String id, MenuDefinition definition, MenuIncludeDefinition includes, final WebMarkupContainer markUp)
+ {
+ super(id);
+ this.includes = (MenuIncludeDefinition) copyMenuElement(getNodeType(), includes);
+ final MenuIncludeDefinition oldDef = includes;
+ final MenuDefinition menuDef = definition;
+ final Form menuform = new Form("menuForm");
+ menuform.add(new TextField("nameField", new PropertyModel(this, "includes.name")));
+ menuform.add(new CheckBox("nestField", new PropertyModel(this, "includes.nest")));
+ menuform.add(new AjaxButton("save")
+ {
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form)
+ {
+ menuActions(SAVE_ACTION, menuDef, oldDef,getIncludes());
+ ((ModalWindow) IncludesWindow.this.getParent()).close(target);
+ target.addComponent(markUp);
+ }
+ });
+ add(menuform);
+ }
+ }
+
+ protected class ExcludesWindow extends WindowPanel
+ {
+ private static final long serialVersionUID = -3223669376958653554L;
+ private MenuExcludeDefinition excludes;
+
+ /**
+ * @return the excludes
+ */
+ public MenuExcludeDefinition getExcludes()
+ {
+ return excludes;
+ }
+
+ /**
+ * @param excludes
+ * the excludes to set
+ */
+ public void setExcludes(MenuExcludeDefinition excludes)
+ {
+ this.excludes = excludes;
+ }
+
+ public ExcludesWindow(String id, MenuDefinition definition, MenuExcludeDefinition excludes, final WebMarkupContainer markUp)
+ {
+ super(id);
+ this.excludes = (MenuExcludeDefinition) copyMenuElement(getNodeType(), excludes);;
+ final MenuExcludeDefinition oldDef = excludes;
+ final MenuDefinition menuDef = definition;
+ final Form menuform = new Form("menuForm");
+ menuform.add(new TextField("nameField", new PropertyModel(this, "excludes.name")));
+ menuform.add(new AjaxButton("save")
+ {
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form)
+ {
+ menuActions(SAVE_ACTION, menuDef, oldDef,getExcludes());
+ ((ModalWindow) ExcludesWindow.this.getParent()).close(target);
+ target.addComponent(markUp);
+ }
+ });
+ add(menuform);
+ }
+ }
+
+ protected class SeparatorWindow extends WindowPanel
+ {
+ private static final long serialVersionUID = -3223669376958653554L;
+ private MenuSeparatorDefinition separator;
+
+ /**
+ * @return the constraintName
+ */
+ public MenuSeparatorDefinition getSeparator()
+ {
+ return separator;
+ }
+
+ /**
+ * @param constraintName
+ * the constraintName to set
+ */
+ public void setSeparator(MenuSeparatorDefinition constraintName)
+ {
+ this.separator = constraintName;
+ }
+
+ public SeparatorWindow(String id, final MenuDefinition definition, MenuSeparatorDefinition separator, final WebMarkupContainer markUp)
+ {
+ super(id);
+ this.separator = (MenuSeparatorDefinition) copyMenuElement(getNodeType(), separator);
+ final MenuSeparatorDefinition sepDef = separator;
+ Form separatorForm = new Form("separatorDataForm");
+ separatorForm.add(new TextField("separatorText", new PropertyModel(this, "separator.text")));
+ separatorForm.add(new TextField("separatorTitle", new PropertyModel(this, "separator.title")));
+ separatorForm.add(new AjaxButton("save", separatorForm)
+ {
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form form)
+ {
+ menuActions(SAVE_ACTION, definition, sepDef,getSeparator());
+ ((ModalWindow) SeparatorWindow.this.getParent()).close(target);
+ target.addComponent(markUp);
+ }
+ });
+ add(separatorForm);
+ }
+ }
+
protected class ImportDataTab extends BasePanel
{
private static final long serialVersionUID = 3676403374892366510L;
- boolean recursively;
+ private boolean recursively;
+ private FileUpload fileUpload;
+ private ExportJetspeedObject exportObject;
+
+ /**
+ * @return the fileUploadField
+ */
+ public FileUpload getFileUploadField()
+ {
+ return fileUpload;
+ }
+
+ /**
+ * @param fileUploadField
+ * the fileUploadField to set
+ */
+ public void setFileUploadField(FileUpload fileUploadField)
+ {
+ this.fileUpload = fileUploadField;
+ }
public ImportDataTab(String id, JetspeedDocument jetspeeeDoc)
{
super(id, jetspeeeDoc);
+ final PageManager castorPageManager = getCastorPageManager();
+ final PageManager pageManager = getPageManager();
final SiteTreeNode node = getUserSelectedNode();
Form exportForm = new Form("exportForm");
Label exportLabel = new Label("exportName", "Export recursively");
- CheckBox exportChkBox = new CheckBox("recursively", new PropertyModel(this, "recursively"));
+ CheckBox exportChkBox = new CheckBox("recursively", new PropertyModel(this, "exportObject.recursively"));
Label exporNameLabel = new Label("expLabel", "Export Object");
TextField exportName = new TextField("expName", new PropertyModel(this, "document.name"));
exportLabel.setVisibilityAllowed(true);
@@ -642,24 +874,119 @@
exportForm.add(exportName);
exportForm.add(exportLabel);
exportForm.add(exportChkBox);
- final ExternalLink ajaxDownlodLink = new ExternalLink("downLoad", "http://www.msn.com");
- ajaxDownlodLink.setVisibilityAllowed(true);
- ajaxDownlodLink.setVisible(false);
- ajaxDownlodLink.setOutputMarkupId(true);
- exportForm.add(ajaxDownlodLink);
- AjaxButton exportButton = new AjaxButton("exprtButton", exportForm)
+ exportObject = new ExportJetspeedObject(node, getPortletRequest().getUserPrincipal().getName(), false);
+ DynamicResourceLink exportButton = new DynamicResourceLink("exprtButton", new PropertyModel(this, "exportObject"))
{
@Override
- protected void onSubmit(AjaxRequestTarget target, Form<?> form)
+ public void onClick()
{
- String link = ExportObject(node, recursively, getPortletRequest().getUserPrincipal().getName());
- ajaxDownlodLink.setDefaultModelObject("http://www.yahoo.com" + link);
- ajaxDownlodLink.setVisible(true);
- target.addComponent(ajaxDownlodLink);
+ setModelObject(new ExportJetspeedObject(node, getPortletRequest().getUserPrincipal().getName(), recursively));
}
};
exportForm.add(exportButton);
add(exportForm);
+ // Adding Upload form Folder
+ Form uploadForm = new Form("uploadForm");
+ add(uploadForm);
+ uploadForm.setVisibilityAllowed(true);
+ uploadForm.setVisible(false);
+ if (node.getDocType().equals(FileType.Folder))
+ {
+ uploadForm.setMultiPart(true);
+ // Add one file input field
+ uploadForm.add(new FileUploadField("fileInput", new PropertyModel(this, "fileUploadField")));
+ uploadForm.add(new Button("uploadFile")
+ {
+ /*
+ * (non-Javadoc)
+ * @see org.apache.wicket.markup.html.form.Button#onSubmit()
+ */
+ @Override
+ public void onSubmit()
+ {
+ final FileUpload upload = fileUpload;
+ final String userName = getPortletRequest().getUserPrincipal().getName();
+ String usrFolder;
+ String fileType;
+ String fileName;
+ String pathSeparator = System.getProperty("file.separator");
+ boolean success = false;
+ if (upload != null)
+ {
+ try
+ {
+ InputStream docStream = upload.getInputStream();
+ fileName = upload.getClientFileName();
+ fileType = fileExt(upload.getClientFileName());
+ cleanUserFolder(userName);
+ usrFolder = getTempFolder(userName);
+ String destPath = node.getNodePath();
+ DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(usrFolder + pathSeparator +
+ upload.getClientFileName())));
+ boolean again = true;
+ while (again)
+ {
+ if (docStream.read() > -1)
+ {
+ out.writeByte(docStream.read());
+ }
+ else
+ again = false;
+ }
+ docStream.close();
+ out.close();
+ // File writed in temp folder
+ if (fileType != null && !fileType.equals("") && fileName != null && !fileName.equals("") && destPath != null &&
+ !destPath.equals(""))
+ {
+ // if "/" is path, then file separator will work, as root.
+ if (destPath.equals("/"))
+ destPath = "";
+ Folder folder = getCastorPageManager().getFolder(userName);
+ if (fileType.equalsIgnoreCase("psml"))
+ {
+ Page source = folder.getPage(fileName);
+ Page page = null;
+ if (pageManager.pageExists(destPath + pathSeparator + fileName))
+ {
+ pageManager.removePage(pageManager.getPage(destPath + pathSeparator + fileName));
+ page = pageManager.copyPage(source, destPath + pathSeparator + fileName);
+ }
+ page = pageManager.copyPage(source, destPath + pathSeparator + fileName);
+ pageManager.updatePage(page);
+ success = true;
+ }
+ else if (fileType.equalsIgnoreCase("link"))
+ {
+ Link source = folder.getLink(fileName);
+ Link link;
+ if (pageManager.linkExists(destPath + pathSeparator + fileName))
+ {
+ pageManager.removeLink(pageManager.getLink(destPath + pathSeparator + fileName));
+ link = pageManager.copyLink(source, destPath + pathSeparator + fileName);
+ }
+ link = pageManager.copyLink(source, destPath + pathSeparator + fileName);
+ pageManager.updateLink(link);
+ success = true;
+ }
+ else if (fileType.equalsIgnoreCase("zip"))
+ {
+ unzipfile(fileName, usrFolder + userName, pathSeparator);
+ folder = getCastorPageManager().getFolder(userName);
+ importFolders(pageManager, getCastorPageManager(), folder, userName, destPath);
+ success = true;
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+ });
+ uploadForm.setVisible(true);
+ }
}
}
@@ -700,66 +1027,723 @@
add(metaDataForm);
}
}
- private class BasePanel extends Panel
+
+ protected class DocumentOrderingTabPanel extends BasePanel
{
- private static final long serialVersionUID = -6442196391739061842L;
- private JetspeedDocument document;
+ List<String> listChoice = new ArrayList<String>();
+ String orderedList = "";
- public BasePanel(String id, JetspeedDocument jDoc)
+ public DocumentOrderingTabPanel(String id, JetspeedDocument document)
{
- super(id);
- this.document = jDoc;
- final FeedbackPanel feedback = new FeedbackPanel("feedback");
- feedback.setOutputMarkupId(true);
- add(feedback);
+ super(id, document);
+ getSubFoldersPage(getDocument());
+ Form documentOrdering = new Form("docuOrderingForm");
+ Label doucmentOrderLabel = new Label("doucmentOrderLabel", "Document ordering");
+ documentOrdering.add(doucmentOrderLabel);
+ final ListMultipleChoice documnetOrder = new ListMultipleChoice("docOrders", new PropertyModel(this, "listChoice"),
+ getDocument().getDocumentOrder());
+ final HiddenField pageOrder = new HiddenField("pageOrder", new PropertyModel(this, "orderedList"));
+ documentOrdering.add(documnetOrder);
+ documentOrdering.add(pageOrder);
+ documentOrdering.add(new AjaxButton("save", documentOrdering)
+ {
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form form)
+ {
+ metaOrderAction(getDocument(), getOrderedList());
+ }
+
+ @Override
+ protected IAjaxCallDecorator getAjaxCallDecorator()
+ {
+ // TODO Auto-generated method stub
+ return new AjaxPreprocessingCallDecorator(super.getAjaxCallDecorator())
+ {
+ private static final long serialVersionUID = 7495281332320552876L;
+
+ @Override
+ public CharSequence preDecorateScript(CharSequence script)
+ {
+ return "convertToString();" + script;
+ }
+ };
+ }
+ });
+ add(documentOrdering);
}
- public BasePanel(String id)
+ /**
+ * @return the orderedList
+ */
+ public String getOrderedList()
{
- super(id);
- final FeedbackPanel feedback = new FeedbackPanel("feedback");
- feedback.setOutputMarkupId(true);
- add(feedback);
+ return orderedList;
}
/**
- * @return the document
+ * @param orderedList
+ * the orderedList to set
*/
- public JetspeedDocument getDocument()
+ public void setOrderedList(String orderedList)
{
- if (PortalSiteManager.this.document != document)
- {
- document = PortalSiteManager.this.document;
- }
- return document;
+ this.orderedList = orderedList;
+ }
+
+ /**
+ * @return the listChoice
+ */
+ public List<String> getListChoice()
+ {
+ return listChoice;
+ }
+
+ /**
+ * @param listChoice
+ * the listChoice to set
+ */
+ public void setListChoice(List<String> listChoice)
+ {
+ this.listChoice = listChoice;
}
}
-
- private class AddFolderPanel extends Panel
+
+ protected class MenuTabPanel extends BasePanel
{
- private JetspeedDocument document;
+ private DefaultTreeModel menuTreeRoot;
+ public MenuDefinition definition = null;
+ List<ITab> menuTabs = new ArrayList<ITab>();
- public AddFolderPanel(String id)
+ public MenuTabPanel(String id, JetspeedDocument document)
{
- super(id);
- document = new JetspeedDocument();
- Form infoForm = new Form("newForm");
- Label nameLabel = new Label("name", "Name");
- TextField nameField = new TextField("nameField", new PropertyModel(this, "document.name"));
- infoForm.add(nameLabel);
- infoForm.add(nameField);
- Label titleLabel = new Label("title", "Title");
- TextField titleField = new TextField("titleField", new PropertyModel(this, "document.title"));
- infoForm.add(titleLabel);
- infoForm.add(titleField);
- Label shortTitleLabel = new Label("shortTitle", "ShortTitle");
- TextField shortTitleField = new TextField("shortTitleField", new PropertyModel(this, "document.shortTitle"));
- infoForm.add(shortTitleField);
- infoForm.add(shortTitleLabel);
- infoForm.add(new AjaxLink("close")
+ super(id, document);
+ ITab tab = null;
+ DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("root");
+ rootNode.add(new DefaultMutableTreeNode(new MenuTreeNode("Menu")));
+
+ // Adding menu tree node
+ menuTreeRoot = new DefaultTreeModel(rootNode);
+ controlMenuTabs(false);
+ final AjaxTabbedPanel menusTab = new AjaxTabbedPanel("menuTabs", menuTabs);
+ LinkTree menuTree = new LinkTree("menuTree", new PropertyModel(this, "menuTreeRoot"))
{
@Override
- public void onClick(AjaxRequestTarget target)
+ protected void onNodeLinkClicked(Object node, BaseTree tree, AjaxRequestTarget target)
+ {
+ MenuTreeNode menuNode = (MenuTreeNode) ((DefaultMutableTreeNode) node).getUserObject();
+ if(menuNode.getName()==null)
+ {
+ setMenuDefinition(menuNode.getDefinition());
+ controlMenuTabs(true);
+ menusTab.setSelectedTab(0);
+ target.addComponent(menusTab);
+ }
+ }
+ };
+ if(getNodeType().equals(FOLDER_NODE_TYPE)){
+ setMenuDefinition(getPageManager().newFolderMenuDefinition());
+ }else{
+ setMenuDefinition(getPageManager().newPageMenuDefinition());
+ }
+ getPageManager().newFolderMenuDefinition();
+ menusTab.setSelectedTab(0);
+ getMenus(getDocument(), rootNode);
+ menuTree.getTreeState().expandNode(rootNode);
+ menuTree.setRootLess(true);
+ add(menuTree);
+ AjaxLink addLink = new AjaxLink("newsave")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ LinkTree linkTree = (LinkTree)getParent().get("menuTree");
+ linkTree.getTreeState().getSelectedNodes();
+
+ }
+ };
+ addLink.setVisibilityAllowed(true);
+ addLink.setVisible(false);
+ add(addLink);
+ AjaxLink removeLink =new AjaxLink("remove"){
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ menuActions(REMOVE_ACTION, getMenuDefinition(),null);
+ LinkTree linkTree = (LinkTree)getParent().get("menuTree");
+ }
+ };
+ removeLink.add(new JavascriptEventConfirmation("onclick", "are you sure?"));
+
+ add(removeLink);
+ add(menusTab);
+ }
+
+ private void controlMenuTabs(final boolean nodeSelected)
+ {
+ ITab tab = null;
+ menuTabs.clear();
+ if (nodeSelected)
+ {
+ tab = new AbstractTab(new Model("Info"))
+ {
+ public Panel getPanel(String panelId)
+ {
+ return new MenuInfoPanel(panelId, getDocument(), getMenuDefinition());
+ }
+ };
+ menuTabs.add(tab);
+ tab = new AbstractTab(new Model("Options"))
+ {
+ public Panel getPanel(String panelId)
+ {
+ return new MenuOptionsPanel(panelId, getDocument(), getMenuDefinition());
+ }
+ };
+ menuTabs.add(tab);
+ tab = new AbstractTab(new Model("Separator"))
+ {
+ public Panel getPanel(String panelId)
+ {
+ return new MenuSeparatorPanel(panelId, getDocument(), getMenuDefinition());
+ }
+ };
+ menuTabs.add(tab);
+ tab = new AbstractTab(new Model("Includes"))
+ {
+ public Panel getPanel(String panelId)
+ {
+ return new MenuIncludesPanel(panelId, getDocument(), getMenuDefinition());
+ }
+ };
+ menuTabs.add(tab);
+ tab = new AbstractTab(new Model("Excludes"))
+ {
+ public Panel getPanel(String panelId)
+ {
+ return new MenuExlcudesPanel(panelId, getDocument(), getMenuDefinition());
+ }
+ };
+ menuTabs.add(tab);
+ }
+ else
+ {
+ tab = new AbstractTab(new Model("Info"))
+ {
+ public Panel getPanel(String panelId)
+ {
+ return new MenuInfoPanel(panelId, getDocument(), getMenuDefinition());
+ }
+ };
+ menuTabs.add(tab);
+ }
+ }
+ }
+
+ protected class MenuInfoPanel extends MenuBasePanel
+ {
+ private MenuDefinition menuDef;
+ MenuDefinition oldDef = null;
+ public MenuDefinition getMenuDef()
+ {
+ return menuDef;
+ }
+ public void setMenuDef(MenuDefinition menuDef)
+ {
+ this.menuDef=menuDef;
+ }
+
+ public MenuInfoPanel(String id, JetspeedDocument document, MenuDefinition definition)
+ {
+ super(id,document,definition);
+ oldDef = (MenuDefinition) copyMenuElement(getNodeType(), definition);
+ this.menuDef = (MenuDefinition) copyMenuElement(getNodeType(), definition);
+ final WebMarkupContainer ajaxPanel = new WebMarkupContainer("ajaxPanel");
+ ajaxPanel.setOutputMarkupId(true);
+ Form menuform = new Form("menuForm");
+ TextField nameField = new TextField("nameField", new PropertyModel(this, "menuDef.name"));
+ nameField.add(StringValidator.minimumLength(1));
+ menuform.add(nameField);
+ TextField optionsField = new TextField("optionsField", new PropertyModel(this, "menuDef.options"));
+ menuform.add(optionsField);
+ TextField depthField = new TextField("depthField", new PropertyModel(this, "menuDef.depth"));
+ menuform.add(depthField);
+ CheckBox pathField = new CheckBox("pathField", new PropertyModel(this, "menuDef.paths"));
+ menuform.add(pathField);
+ CheckBox regExpField = new CheckBox("regExpField", new PropertyModel(this, "menuDef.regexp"));
+ menuform.add(regExpField);
+ TextField profileField = new TextField("profileField", new PropertyModel(this, "menuDef.profile"));
+ menuform.add(profileField);
+ TextField titleField = new TextField("titleField", new PropertyModel(this, "menuDef.title"));
+ menuform.add(titleField);
+ TextField skinField = new TextField("skinField", new PropertyModel(this, "menuDef.skin"));
+ menuform.add(skinField);
+ TextField orderField = new TextField("orderField", new PropertyModel(this, "menuDef.order"));
+ menuform.add(orderField);
+ AjaxButton saveButton = new AjaxButton("save")
+
+ {
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form)
+ {
+ menuActions(SAVE_ACTION, oldDef,getMenuDef());
+ oldDef = (MenuDefinition) copyMenuElement(getNodeType(), getMenuDef());
+ target.addComponent(ajaxPanel);
+ }
+ };
+ menuform.add(saveButton);
+ ajaxPanel.add(menuform);
+ add(ajaxPanel);
+ }
+ }
+
+ protected class MenuSeparatorPanel extends MenuBasePanel
+ {
+ public MenuSeparatorPanel(String id, JetspeedDocument document, MenuDefinition definition)
+ {
+ super(id,document,definition);
+ final ModalWindow metaDataModalWindow;
+ getMenuElements(definition, MenuElement.SEPARATOR_ELEMENT_TYPE);
+ final MenuDefinition def = (MenuDefinition) copyMenuElement(getNodeType(), definition);
+ add(metaDataModalWindow = new ModalWindow("modalwindow"));
+ final WebMarkupContainer ajaxPanel = new WebMarkupContainer("basePanel");
+ ajaxPanel.setOutputMarkupId(true);
+ ajaxPanel.add(new ListView("separator", new PropertyModel(this, "menuOptions"))
+ {
+ public void populateItem(final ListItem listItem)
+ {
+ final MenuSeparatorDefinition separator = (MenuSeparatorDefinition) listItem.getModelObject();
+ listItem.add(new Label("text", separator.getText()));
+ listItem.add(new Label("title", separator.getTitle()));
+ listItem.add(new AjaxLink("edit")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ metaDataModalWindow.setContent(new SeparatorWindow(metaDataModalWindow.getContentId(), def,separator,ajaxPanel));
+ metaDataModalWindow.show(target);
+ }
+ });
+ listItem.add(new AjaxLink("delete")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ menuActions(REMOVE_ACTION, def,separator, null);
+ target.addComponent(ajaxPanel);
+ }
+ }.add(new JavascriptEventConfirmation("onclick", "are you sure?")));
+ }
+ });
+ add(new AjaxLink("new")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ MenuSeparatorDefinition separatorDefinition = null;
+ if (getUserSelectedNode().getDocType() == FileType.Folder)
+ {
+ separatorDefinition = getPageManager().newFolderMenuSeparatorDefinition();
+ }
+ else
+ {
+ separatorDefinition = getPageManager().newPageMenuSeparatorDefinition();
+ }
+ metaDataModalWindow.setContent(new SeparatorWindow(metaDataModalWindow.getContentId(), def, separatorDefinition, ajaxPanel));
+ metaDataModalWindow.show(target);
+ }
+ });
+ add(ajaxPanel);
+ }
+ }
+
+ protected class MenuExlcudesPanel extends MenuBasePanel
+ {
+ public MenuExlcudesPanel(String id, JetspeedDocument document, MenuDefinition definition)
+ {
+ super(id,document,definition);
+ getMenuElements(definition, EXCLUDES);
+ final ModalWindow metaDataModalWindow;
+ final MenuDefinition def = (MenuDefinition) copyMenuElement(getNodeType(), definition);
+ add(metaDataModalWindow = new ModalWindow("modalwindow"));
+ final WebMarkupContainer ajaxPanel = new WebMarkupContainer("basePanel");
+ ajaxPanel.setOutputMarkupId(true);
+ ajaxPanel.add(new ListView("menuData", new PropertyModel(this, "menuOptions"))
+ {
+ public void populateItem(final ListItem listItem)
+ {
+ final MenuExcludeDefinition option = (MenuExcludeDefinition) listItem.getModelObject();
+ listItem.add(new Label("name", option.getName()));
+ listItem.add(new AjaxLink("edit")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ metaDataModalWindow.setContent(new ExcludesWindow(metaDataModalWindow.getContentId(), def, option, ajaxPanel));
+ metaDataModalWindow.show(target);
+ }
+ });
+ listItem.add(new AjaxLink("delete")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ menuActions(REMOVE_ACTION,def, option, null);
+ target.addComponent(ajaxPanel);
+ }
+ }.add(new JavascriptEventConfirmation("onclick", "are you sure?")));
+ }
+ });
+ add(new AjaxLink("new")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ MenuExcludeDefinition excludeDefinition = null;
+ if (getUserSelectedNode().getDocType() == FileType.Folder)
+ {
+ excludeDefinition = getPageManager().newFolderMenuExcludeDefinition();
+ }
+ else
+ {
+ excludeDefinition = getPageManager().newPageMenuExcludeDefinition();
+ }
+ metaDataModalWindow.setContent(new ExcludesWindow(metaDataModalWindow.getContentId(), def, excludeDefinition, ajaxPanel));
+ metaDataModalWindow.show(target);
+ }
+ });
+ add(ajaxPanel);
+ }
+ }
+
+ protected class MenuIncludesPanel extends MenuBasePanel
+ {
+ public MenuIncludesPanel(String id, JetspeedDocument document, MenuDefinition definition)
+ {
+ super(id,document,definition);
+ getMenuElements(definition, INCLUDES);
+ final ModalWindow metaDataModalWindow;
+ add(metaDataModalWindow = new ModalWindow("modalwindow"));
+ final MenuDefinition def = (MenuDefinition) copyMenuElement(getNodeType(), definition);
+ final WebMarkupContainer ajaxPanel = new WebMarkupContainer("basePanel");
+ ajaxPanel.setOutputMarkupId(true);
+ ajaxPanel.add(new ListView("menuData", new PropertyModel(this, "menuOptions"))
+ {
+ public void populateItem(final ListItem listItem)
+ {
+ final MenuIncludeDefinition option = (MenuIncludeDefinition) listItem.getModelObject();
+ listItem.add(new Label("name", option.getName()));
+ listItem.add(new Label("nest", Boolean.toString(option.isNest())));
+ listItem.add(new AjaxLink("edit")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ metaDataModalWindow.setContent(new IncludesWindow(metaDataModalWindow.getContentId(), def,
+ option, ajaxPanel));
+ metaDataModalWindow.show(target);
+ target.addComponent(ajaxPanel);
+ }
+ });
+ listItem.add(new AjaxLink("delete")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ menuActions(REMOVE_ACTION,def,option,null);
+ target.addComponent(ajaxPanel);
+ }
+ }.add(new JavascriptEventConfirmation("onclick", "are you sure?")));
+ }
+ });
+ add(new AjaxLink("new")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ MenuIncludeDefinition includeDefinition = null;
+ if (getUserSelectedNode().getDocType() == FileType.Folder)
+ {
+ includeDefinition = getPageManager().newFolderMenuIncludeDefinition();
+ }
+ else
+ {
+ includeDefinition = getPageManager().newPageMenuIncludeDefinition();
+ }
+ metaDataModalWindow.setContent(new IncludesWindow(metaDataModalWindow.getContentId(), def, includeDefinition, ajaxPanel));
+ metaDataModalWindow.show(target);
+ }
+ });
+ add(ajaxPanel);
+ }
+ }
+
+ protected class MenuOptionsPanel extends MenuBasePanel
+ {
+
+ public MenuOptionsPanel(String id, JetspeedDocument document, MenuDefinition definition)
+ {
+ super(id,document,definition);
+ getMenuElements(definition, MenuElement.OPTION_ELEMENT_TYPE);
+ final ModalWindow metaDataModalWindow;
+ final MenuDefinition def = (MenuDefinition) copyMenuElement(getNodeType(), definition);
+ add(metaDataModalWindow = new ModalWindow("modalwindow"));
+ final WebMarkupContainer ajaxPanel = new WebMarkupContainer("basePanel");
+ ajaxPanel.setOutputMarkupId(true);
+ ajaxPanel.add(new ListView("menuData", new PropertyModel(this, "menuOptions"))
+ {
+ public void populateItem(final ListItem listItem)
+ {
+ final MenuOptionsDefinition option = (MenuOptionsDefinition) listItem.getModelObject();
+ listItem.add(new Label("option", option.getOptions()));
+ listItem.add(new Label("order", option.getOrder()));
+ listItem.add(new Label("path", Boolean.toString(option.isPaths())));
+ listItem.add(new Label("regexp", Boolean.toString(option.isRegexp())));
+ listItem.add(new AjaxLink("edit")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ metaDataModalWindow.setContent(new OptionsWindow(metaDataModalWindow.getContentId(),def, option,ajaxPanel));
+ metaDataModalWindow.show(target);
+ target.addComponent(ajaxPanel);
+ }
+ });
+ listItem.add(new AjaxLink("delete")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ menuActions(REMOVE_ACTION,def, option,null);
+ target.addComponent(ajaxPanel);
+ }
+ }.add(new JavascriptEventConfirmation("onclick", "are you sure?")));
+ }
+ });
+ add(new AjaxLink("new")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ MenuOptionsDefinition optionDefinition = null;
+ if (getUserSelectedNode().getDocType() == FileType.Folder)
+ {
+ optionDefinition = getPageManager().newFolderMenuOptionsDefinition();
+ }
+ else
+ {
+ optionDefinition = getPageManager().newPageMenuOptionsDefinition();
+ }
+ metaDataModalWindow.setContent(new OptionsWindow(metaDataModalWindow.getContentId(),def, optionDefinition,ajaxPanel ));
+ metaDataModalWindow.show(target);
+ }
+ });
+ add(ajaxPanel);
+ }
+ }
+
+ private class BasePanel extends Panel
+ {
+ private static final long serialVersionUID = -6442196391739061842L;
+ private JetspeedDocument document;
+
+ public BasePanel(String id, JetspeedDocument jDoc)
+ {
+ super(id);
+ this.document = jDoc;
+ final FeedbackPanel feedback = new FeedbackPanel("feedback");
+ feedback.setOutputMarkupId(true);
+ add(feedback);
+ }
+
+ public BasePanel(String id)
+ {
+ super(id);
+ final FeedbackPanel feedback = new FeedbackPanel("feedback");
+ feedback.setOutputMarkupId(true);
+ add(feedback);
+ }
+
+ /**
+ * @return the document
+ */
+ public JetspeedDocument getDocument()
+ {
+ if (PortalSiteManager.this.document != document)
+ {
+ document = PortalSiteManager.this.document;
+ }
+ return document;
+ }
+ }
+
+ protected class ExportJetspeedObject implements ResourceProvider, Serializable
+ {
+ private SiteTreeNode node;
+ private boolean recursively;
+ private String userName;
+ private ExportObject exportObject;
+ private FileInputStream inputStream;
+
+ /**
+ * @param recursively
+ * the recursively to set
+ */
+ public void setRecursively(boolean recursively)
+ {
+ this.recursively = recursively;
+ }
+
+ /**
+ * @param nodeName
+ * @param userName
+ * @param recursively
+ */
+ public ExportJetspeedObject(SiteTreeNode node, String userName, boolean recursively)
+ {
+ super();
+ this.node = node;
+ this.userName = userName;
+ this.recursively = recursively;
+ }
+
+ public void close()
+ {
+ try
+ {
+ inputStream.close();
+ }
+ catch (IOException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ public String getContentType()
+ {
+ return exportObject.getContentType();
+ }
+
+ public long getLastModified()
+ {
+ return 0;
+ }
+
+ public long getLength()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public String getName()
+ {
+ return "";
+ }
+
+ public InputStream getResource()
+ {
+ return inputStream;
+ }
+
+ public void open()
+ {
+ exportObject = exportJetspeedtObject(node, recursively, userName);
+ try
+ {
+ inputStream = new FileInputStream(exportObject.getFilePath());
+ }
+ catch (FileNotFoundException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+
+ protected class MenuBasePanel extends Panel
+ {
+ private static final long serialVersionUID = 1L;
+ private JetspeedDocument document;
+
+ public MenuBasePanel(String id, JetspeedDocument jDoc, MenuDefinition definition)
+ {
+ super(id);
+ this.document = jDoc;
+ setMenuDefinition(definition);
+ }
+
+ public MenuBasePanel(String id)
+ {
+ super(id);
+ }
+
+ /**
+ * @return the document
+ */
+ public JetspeedDocument getDocument()
+ {
+ if (PortalSiteManager.this.document != document)
+ {
+ document = PortalSiteManager.this.document;
+ }
+ return document;
+ }
+
+ /**
+ * @return the menuOptions
+ */
+ public List getMenuOptions()
+ {
+ return getMenuOption();
+ }
+
+ /**
+ * @param menuOptions
+ * the menuOptions to set
+ */
+ public void setMenuOptions(List menuOptions)
+ {
+ setMenuOption(menuOptions);
+ }
+
+
+ }
+ protected class WindowPanel extends Panel{
+
+ public WindowPanel(String id)
+ {
+ super(id);
+ }
+ }
+ private class AddFolderPanel extends Panel
+ {
+ private JetspeedDocument document;
+
+ public AddFolderPanel(String id)
+ {
+ super(id);
+ final FeedbackPanel feedback = new FeedbackPanel("feedback");
+ feedback.setOutputMarkupId(true);
+ add(feedback);
+ document = new JetspeedDocument();
+ Form infoForm = new Form("newForm");
+ Label nameLabel = new Label("name", "Name");
+ TextField nameField = new TextField("nameField", new PropertyModel(this, "document.name"));
+ nameField.setRequired(true);
+ infoForm.add(nameLabel);
+ infoForm.add(nameField);
+ Label titleLabel = new Label("title", "Title");
+ TextField titleField = new TextField("titleField", new PropertyModel(this, "document.title"));
+ titleField.setRequired(true);
+ infoForm.add(titleLabel);
+ infoForm.add(titleField);
+ Label shortTitleLabel = new Label("shortTitle", "ShortTitle");
+ TextField shortTitleField = new TextField("shortTitleField", new PropertyModel(this, "document.shortTitle"));
+ infoForm.add(shortTitleField);
+ infoForm.add(shortTitleLabel);
+ infoForm.add(new AjaxLink("close")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
{
((ModalWindow) AddFolderPanel.this.getParent()).close(target);
}
@@ -778,6 +1762,9 @@
{
getPageManager().updateFolder(folder);
node.insert(new DefaultMutableTreeNode(new SiteTreeNode(folder)), 0);
+ LinkTree tree = (PortalTree) getPage().get("siteTree");
+ tree.getTreeState().expandNode(node);
+ tree.updateTree(target);
}
catch (FolderNotUpdatedException e)
{
@@ -791,6 +1778,12 @@
}
((ModalWindow) AddFolderPanel.this.getParent()).close(target);
}
+
+ @Override
+ protected void onError(AjaxRequestTarget target, Form<?> form)
+ {
+ target.addComponent(feedback);
+ }
});
add(infoForm);
}
@@ -798,21 +1791,226 @@
private class AddPagePanel extends Panel
{
+ private JetspeedDocument document;
+
public AddPagePanel(String id)
{
super(id);
+ final FeedbackPanel feedback = new FeedbackPanel("feedback");
+ feedback.setOutputMarkupId(true);
+ add(feedback);
+ document = new JetspeedDocument();
+ Form infoForm = new Form("newForm");
+ Label nameLabel = new Label("name", "Name");
+ TextField nameField = new TextField("nameField", new PropertyModel(this, "document.name"));
+ nameField.setRequired(true);
+ infoForm.add(nameLabel);
+ infoForm.add(nameField);
+ Label titleLabel = new Label("title", "Title");
+ TextField titleField = new TextField("titleField", new PropertyModel(this, "document.title"));
+ titleField.setRedirect(true);
+ infoForm.add(titleLabel);
+ infoForm.add(titleField);
+ Label shortTitleLabel = new Label("shortTitle", "ShortTitle");
+ TextField shortTitleField = new TextField("shortTitleField", new PropertyModel(this, "document.shortTitle"));
+ infoForm.add(shortTitleField);
+ infoForm.add(shortTitleLabel);
+ Label pageDecoratorLabel = new Label("pageDecorator", "Page Decorator");
+ DropDownChoice decoratorsList = new DropDownChoice("decoratorsList", new PropertyModel(this, "document.pageDecorator"), getPageDecorators());
+ infoForm.add(decoratorsList);
+ infoForm.add(pageDecoratorLabel);
+ Label portletDecoratorLabel = new Label("portletDecorator", "Portlet Decorator");
+ DropDownChoice portletDecoratorsList = new DropDownChoice("portletDecoratorsList", new PropertyModel(this, "document.portletDecorator"),
+ getPortletDecorators());
+ infoForm.add(portletDecoratorLabel);
+ infoForm.add(portletDecoratorsList);
+ Label themeLabel = new Label("theme", "Theme");
+ DropDownChoice themeField = new DropDownChoice("themeList", new PropertyModel(this, "document.desktopTheme"), getThemes());
+ infoForm.add(themeField);
+ infoForm.add(themeLabel);
+ Label visibleLabel = new Label("visible", "Hidden");
+ CheckBox visibleCheckbox = new CheckBox("visibleCheck", new PropertyModel(this, "document.hidden"));
+ infoForm.add(visibleLabel);
+ infoForm.add(visibleCheckbox);
+ infoForm.add(new AjaxLink("close")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ ((ModalWindow) AddPagePanel.this.getParent()).close(target);
+ }
+ });
+ infoForm.add(new AjaxButton("new")
+ {
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form)
+ {
+ SiteTreeNode treeNode = getUserSelectedNode();
+ DefaultMutableTreeNode node = getSelectedNode();
+ Page page = getPageManager().newPage(treeNode.getNodePath() + "/" + document.getName() + ".psml");
+ page.setTitle(document.getTitle());
+ page.setShortTitle(document.getShortTitle());
+ page.setDefaultDecorator(document.getPageDecorator(), Fragment.LAYOUT);
+ page.setDefaultDecorator(document.getPortletDecorator(), Fragment.PORTLET);
+ page.setSkin(document.getDesktopTheme());
+ page.setHidden(document.isHidden());
+ try
+ {
+ getPageManager().updatePage(page);
+ node.insert(new DefaultMutableTreeNode(new SiteTreeNode(page)), 0);
+ LinkTree tree = (PortalTree) getPage().get("siteTree");
+ tree.getTreeState().expandNode(node);
+ tree.updateTree(target);
+ }
+ catch (PageNotUpdatedException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ catch (NodeException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ ((ModalWindow) AddPagePanel.this.getParent()).close(target);
+ }
+
+ @Override
+ protected void onError(AjaxRequestTarget target, Form<?> form)
+ {
+ target.addComponent(feedback);
+ }
+ });
+ add(infoForm);
}
}
private class AddLinkPanel extends Panel
{
+ private JetspeedDocument document;
+
public AddLinkPanel(String id)
{
super(id);
+ final FeedbackPanel feedback = new FeedbackPanel("feedback");
+ feedback.setOutputMarkupId(true);
+ add(feedback);
+ document = new JetspeedDocument();
+ Form infoForm = new Form("newForm");
+ Label nameLabel = new Label("name", "Name");
+ TextField nameField = new TextField("nameField", new PropertyModel(this, "document.name"));
+ nameField.setRequired(true);
+ infoForm.add(nameLabel);
+ infoForm.add(nameField);
+ Label titleLabel = new Label("title", "Title");
+ TextField titleField = new TextField("titleField", new PropertyModel(this, "document.title"));
+ infoForm.add(titleLabel);
+ infoForm.add(titleField);
+ Label shortTitleLabel = new Label("shortTitle", "ShortTitle");
+ TextField shortTitleField = new TextField("shortTitleField", new PropertyModel(this, "document.shortTitle"));
+ infoForm.add(shortTitleField);
+ infoForm.add(shortTitleLabel);
+ Label urlLabel = new Label("urlLabel", "URL");
+ TextField urlField = new TextField("urlField", new PropertyModel(this, "document.url"));
+ urlField.setRequired(true);
+ infoForm.add(urlLabel);
+ infoForm.add(urlField);
+ Label targetLabel = new Label("targetLabel", "Target Window");
+ DropDownChoice targetField = new DropDownChoice("target", new PropertyModel(this, "document.target"), getTargetList());
+ infoForm.add(targetLabel);
+ infoForm.add(targetField);
+ Label visibleLabel = new Label("visible", "Hidden");
+ CheckBox visibleCheckbox = new CheckBox("visibleCheck", new PropertyModel(this, "document.hidden"));
+ infoForm.add(visibleLabel);
+ infoForm.add(visibleCheckbox);
+ infoForm.add(new AjaxLink("close")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ ((ModalWindow) AddLinkPanel.this.getParent()).close(target);
+ }
+ });
+ infoForm.add(new AjaxButton("new")
+ {
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form)
+ {
+ SiteTreeNode treeNode = getUserSelectedNode();
+ DefaultMutableTreeNode node = getSelectedNode();
+ Link link = getPageManager().newLink(treeNode.getNodePath() + "/" + document.getName() + ".link");
+ link.setTitle(document.getTitle());
+ link.setShortTitle(document.getShortTitle());
+ link.setUrl(document.getUrl());
+ link.setTarget(document.getTarget());
+ link.setHidden(document.isHidden());
+ try
+ {
+ getPageManager().updateLink(link);
+ node.insert(new DefaultMutableTreeNode(new SiteTreeNode(link)), 0);
+ LinkTree tree = (PortalTree) getPage().get("siteTree");
+ tree.getTreeState().expandNode(node);
+ tree.updateTree(target);
+ }
+ catch (LinkNotUpdatedException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ catch (NodeException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ ((ModalWindow) AddLinkPanel.this.getParent()).close(target);
+ }
+
+ @Override
+ protected void onError(AjaxRequestTarget target, Form<?> form)
+ {
+ target.addComponent(feedback);
+ }
+ });
+ add(infoForm);
+ }
+ }
+
+ private class ExportObject implements Serializable
+ {
+ private String filePath;
+ private String contentType;
+
+ /**
+ * @param filePath
+ * @param contentType
+ */
+ public ExportObject(String filePath, String contentType)
+ {
+ super();
+ this.filePath = filePath;
+ this.contentType = contentType;
+ }
+
+ /**
+ * @return the filePath
+ */
+ public String getFilePath()
+ {
+ return filePath;
+ }
+
+ /**
+ * @return the contentType
+ */
+ public String getContentType()
+ {
+ return contentType;
}
}
+
protected void controlTabs()
{
+ SiteTreeNode node = getUserSelectedNode();
TabbedPanel tabs = (TabbedPanel) get("tabs");
tabs.getTabs().clear();
ITab tempTab;
@@ -840,6 +2038,28 @@
}
};
tabs.getTabs().add(tempTab);
+ if (node.getDocType().equals(FileType.Folder))
+ {
+ tempTab = new AbstractTab(new Model("Document ordering"))
+ {
+ public Panel getPanel(String panelId)
+ {
+ return new DocumentOrderingTabPanel(panelId, document);
+ }
+ };
+ tabs.getTabs().add(tempTab);
+ }
+ if (node.getDocType().equals(FileType.Folder) || node.getDocType().equals(FileType.Page))
+ {
+ tempTab = new AbstractTab(new Model("Menus"))
+ {
+ public Panel getPanel(String panelId)
+ {
+ return new MenuTabPanel(panelId, document);
+ }
+ };
+ tabs.getTabs().add(tempTab);
+ }
tempTab = new AbstractTab(new Model("Import/Export"))
{
public Panel getPanel(String panelId)
@@ -850,6 +2070,7 @@
tabs.getTabs().add(tempTab);
tabs.setSelectedTab(0);
}
+
protected void insertMetadata(JetspeedDocumentMetaData metaData, Node node)
{
Locale locale = new Locale(metaData.getLanguage());
@@ -1034,7 +2255,6 @@
}
}
-
/**
* @return the userFolder
*/
@@ -1052,7 +2272,6 @@
this.userFolder = userFolder;
}
-
protected String determineRootFolder(RenderRequest request)
{
String jsroot = request.getParameter(JSROOT);
@@ -1075,7 +2294,7 @@
{
try
{
- Folder folder = pageManager.getFolder(root);
+ Folder folder = getPageManager().getFolder(root);
return folder;
}
catch (Exception e)
@@ -1139,6 +2358,7 @@
// TODO: handle exception
}
}
+
private void metaDataAction(String action, JetspeedDocumentMetaData metaData, JetspeedDocumentMetaData oldMetaData)
{
SiteTreeNode node = getUserSelectedNode();
@@ -1192,32 +2412,23 @@
// TODO: handle exception
}
}
+
private DefaultMutableTreeNode populateUserTree(String userName)
{
- // DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(new SiteTreeNode("ROOT", "/"));
- // List list = new ArrayList<SiteTreeNode>();
- // list.add(new SiteTreeNode("pages", "/pages"));
- // list.add(new SiteTreeNode("_users", "/_users"));
- // // rootNode.add(new DefaultMutableTreeNode(list));
- // add(rootNode, list);
DefaultMutableTreeNode rootNode = null;
rootNode = retrieveFolders("/_user/" + userName, rootNode);
treeRoot = new DefaultTreeModel(rootNode);
return rootNode;
}
+
private DefaultMutableTreeNode populateTree()
{
- // DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(new SiteTreeNode("ROOT", "/"));
- // List list = new ArrayList<SiteTreeNode>();
- // list.add(new SiteTreeNode("pages", "/pages"));
- // list.add(new SiteTreeNode("_users", "/_users"));
- // // rootNode.add(new DefaultMutableTreeNode(list));
- // add(rootNode, list);
DefaultMutableTreeNode rootNode = null;
rootNode = retrieveFolders("/", rootNode);
treeRoot = new DefaultTreeModel(rootNode);
return rootNode;
}
+
private DefaultMutableTreeNode retrieveFolders(String folderPath, DefaultMutableTreeNode rootNode)
{
try
@@ -1229,13 +2440,23 @@
Folder rootfolder = getPageManager().getFolder(folderPath);
if (rootNode == null)
{
- rootNode = new DefaultMutableTreeNode(new SiteTreeNode(rootfolder));
+ rootNode = new DefaultMutableTreeNode(new SiteTreeNode(rootfolder, true));
}
Iterator folders = rootfolder.getFolders().iterator();
while (folders.hasNext())
{
folder = (Folder) folders.next();
- rootNode.add(new DefaultMutableTreeNode(new SiteTreeNode(folder)));
+ if (rootfolder.getPath().equals("/_user"))
+ {
+ if (folder.getName().startsWith("template"))
+ {
+ rootNode.add(new DefaultMutableTreeNode(new SiteTreeNode(folder)));
+ }
+ }
+ else
+ {
+ rootNode.add(new DefaultMutableTreeNode(new SiteTreeNode(folder)));
+ }
}
Iterator pages = rootfolder.getPages().iterator();
while (pages.hasNext())
@@ -1261,6 +2482,7 @@
}
return rootNode;
}
+
private List<String> getPortletDecorators()
{
if (portletDecorators == null)
@@ -1274,6 +2496,7 @@
}
return portletDecorators;
}
+
private List<String> getPageDecorators()
{
if (pageDecoraters == null)
@@ -1287,6 +2510,7 @@
}
return pageDecoraters;
}
+
private List<String> getThemes()
{
if (pageThemes == null)
@@ -1300,6 +2524,7 @@
}
return pageThemes;
}
+
private List<String> getTargetList()
{
if (targetList == null)
@@ -1312,6 +2537,7 @@
}
return targetList;
}
+
private List<String> getConstraintsDef()
{
if (constraintsDefs == null)
@@ -1332,6 +2558,7 @@
}
return constraintsDefs;
}
+
private void populateDocument(SiteTreeNode node)
{
try
@@ -1349,11 +2576,52 @@
document = new JetspeedDocument(getPageManager().getLink(node.getNodePath()));
}
}
- catch (Exception e)
- {
- e.printStackTrace();
- }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ private void metaOrderAction(JetspeedDocument document, String choices)
+ {
+ SiteTreeNode node = getUserSelectedNode();
+ PageManager pageManger = getPageManager();
+ List<String> documentOrder = null;
+ if (node != null)
+ {
+ if (choices != null)
+ {
+ documentOrder = Arrays.asList(choices.split(","));
+ }
+ if (node.getDocType() == SiteTreeNode.FileType.Folder)
+ {
+ try
+ {
+ Folder folder = pageManger.getFolder(node.getNodePath());
+ {
+ folder.setDocumentOrder(documentOrder);
+ pageManger.updateFolder(folder);
+ }
+ }
+ catch (FolderNotFoundException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ catch (InvalidFolderException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ catch (NodeException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
}
+
private void excuteAction(JetspeedDocument document, String action)
{
SiteTreeNode node = getUserSelectedNode();
@@ -1471,6 +2739,7 @@
}
}
}
+
private String fileExt(String fileName)
{
int extIndex = fileName.lastIndexOf(".");
@@ -1481,10 +2750,12 @@
return "";
}
- private String ExportObject(SiteTreeNode siteNode, boolean recursive, String userName)
+ private ExportObject exportJetspeedtObject(SiteTreeNode siteNode, boolean recursive, String userName)
{
String downloadPath = "";
+ String contentType = "text/xml";
boolean success = true;
+ ExportObject jetspeedObject = null;
String objectPath = siteNode.getNodePath();
if (!cleanUserFolder(userName))
success = false;
@@ -1525,24 +2796,28 @@
}
String link = userName + "_" + siteNode.getNodeName();
if (siteNode.getDocType() == SiteTreeNode.FileType.Folder)
+ {
+ contentType = "application/zip";
link = userName + ".zip";
- getServletRequest().getSession().setAttribute("file", link);
- downloadPath = PortalSiteManagerUtil.getDownloadLink(getServletRequest(), siteNode.getNodeName(), userName, siteNode.getDocType().toString());
+ }
+ downloadPath = PortalSiteManagerUtil.getDownloadLink(siteNode.getNodeName(), userName, siteNode.getDocType().toString());
+ jetspeedObject = new ExportObject(downloadPath, contentType);
}
catch (Exception e)
{
e.printStackTrace();
}
}
- return downloadPath;
+ return jetspeedObject;
}
- private String getTempFolder(ActionRequest request)
+
+ private String getTempFolder(String userName)
{
String dir = System.getProperty("java.io.tmpdir");
String path = System.getProperty("file.separator");
- File file = new File(dir + path + request.getUserPrincipal());
+ File file = new File(dir + path + userName);
file.mkdir();
- return dir + path + request.getUserPrincipal();
+ return dir + path + userName;
}
private static final void copyInputStream(InputStream in, OutputStream out) throws IOException
@@ -1565,192 +2840,827 @@
entries = zipFile.entries();
while (entries.hasMoreElements())
{
- ZipEntry entry = (ZipEntry) entries.nextElement();
- filePath = destination + sepreator + entry.getName();
- createPath(filePath);
- copyInputStream(zipFile.getInputStream(entry), new BufferedOutputStream(new FileOutputStream(filePath)));
+ ZipEntry entry = (ZipEntry) entries.nextElement();
+ filePath = destination + sepreator + entry.getName();
+ createPath(filePath);
+ copyInputStream(zipFile.getInputStream(entry), new BufferedOutputStream(new FileOutputStream(filePath)));
+ }
+ zipFile.close();
+ return true;
+ }
+ catch (IOException ioe)
+ {
+ ioe.printStackTrace();
+ return false;
+ }
+ }
+
+ private void createPath(String filePath)
+ {
+ String parentPath = "";
+ File file = new File(filePath);
+ File parent = new File(file.getParent());
+ if (!parent.exists())
+ {
+ parentPath = parent.getPath();
+ createPath(parentPath);
+ parent.mkdir();
+ }
+ }
+
+ private Folder importFolders(PageManager pageManager, PageManager castorPageManager, Folder srcFolder, String userName, String destination)
+ throws JetspeedException
+ {
+ Folder dstFolder = lookupFolder(castorPageManager, srcFolder.getPath());
+ dstFolder = pageManager.copyFolder(srcFolder, destination);
+ pageManager.updateFolder(dstFolder);
+ String newPath = "";
+ Iterator pages = srcFolder.getPages().iterator();
+ while (pages.hasNext())
+ {
+ Page srcPage = (Page) pages.next();
+ Page dstPage = lookupPage(castorPageManager, srcPage.getPath());
+ newPath = destination + getRealPath(srcPage.getPath());
+ dstPage = pageManager.copyPage(srcPage, newPath);
+ pageManager.updatePage(dstPage);
+ }
+ Iterator links = srcFolder.getLinks().iterator();
+ while (links.hasNext())
+ {
+ Link srcLink = (Link) links.next();
+ Link dstLink = lookupLink(castorPageManager, srcLink.getPath());
+ newPath = destination + getRealPath(srcLink.getPath());
+ dstLink = pageManager.copyLink(srcLink, newPath);
+ pageManager.updateLink(dstLink);
+ }
+ Iterator folders = srcFolder.getFolders().iterator();
+ while (folders.hasNext())
+ {
+ Folder folder = (Folder) folders.next();
+ newPath = destination + getRealPath(folder.getPath());
+ importFolders(pageManager, castorPageManager, folder, userName, newPath);
+ }
+ return dstFolder;
+ }
+
+ private Page lookupPage(PageManager castorPageManager, String path)
+ {
+ try
+ {
+ return castorPageManager.getPage(path);
+ }
+ catch (Exception e)
+ {
+ return null;
+ }
+ }
+
+ private Link lookupLink(PageManager castorPageManager, String path)
+ {
+ try
+ {
+ return castorPageManager.getLink(path);
+ }
+ catch (Exception e)
+ {
+ return null;
+ }
+ }
+
+ private Folder lookupFolder(PageManager castorPageManager, String path)
+ {
+ try
+ {
+ return castorPageManager.getFolder(path);
+ }
+ catch (Exception e)
+ {
+ return null;
+ }
+ }
+
+ private String getRealPath(String path)
+ {
+ int index = path.lastIndexOf("/");
+ if (index > 0)
+ {
+ return path.substring(index);
+ }
+ return path;
+ }
+
+ private boolean cleanUserFolder(String userName)
+ {
+ boolean success = false;
+ synchronized (this)
+ {
+ String tmpdir = System.getProperty("java.io.tmpdir");
+ String path = System.getProperty("file.separator");
+ String folder = tmpdir + path + userName;
+ File dir = new File(folder);
+ if (dir.exists())
+ {
+ success = deleteDir(dir);
+ }
+ success = dir.mkdir();
+ }
+ return success;
+ }
+
+ private boolean deleteDir(File dir)
+ {
+ if (dir.exists())
+ {
+ File[] files = dir.listFiles();
+ for (int i = 0; i < files.length; i++)
+ {
+ if (files[i].isDirectory())
+ {
+ deleteDir(files[i]);
+ }
+ else
+ {
+ files[i].delete();
+ }
+ }
+ }
+ return (dir.delete());
+ }
+
+ private DefaultMutableTreeNode getSelectedNode()
+ {
+ PortalTree tree = (PortalTree) getPage().get("siteTree");
+ Collection selectedNodes = tree.getTreeState().getSelectedNodes();
+ DefaultMutableTreeNode treeNode = null;
+ if (selectedNodes != null)
+ {
+ Iterator selectedNode = selectedNodes.iterator();
+ while (selectedNode.hasNext())
+ {
+ treeNode = (DefaultMutableTreeNode) selectedNode.next();
+ break;
+ }
+ if (treeNode == null)
+ {
+ treeNode = new DefaultMutableTreeNode(new SiteTreeNode("root", "/", FileType.Folder));
+ }
+ }
[... 768 lines stripped ...]
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org