/* * Copyright (C) 2009 eXo Platform SAS. * * This 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 software 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 software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.exoplatform.frameworks.jcr.command.web.fckeditor; import org.apache.commons.chain.Command; import org.apache.commons.chain.Context; import org.exoplatform.frameworks.jcr.command.web.GenericWebAppContext; import org.exoplatform.services.jcr.core.ManageableRepository; import org.w3c.dom.Document; import org.w3c.dom.Element; import javax.jcr.Node; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Created by The eXo Platform SAS . * * @author <a href="mailto:gennady.azarenkov@exoplatform.com">Gennady Azarenkov</a> * @version $Id: CreateFolderCommand.java 34445 2009-07-24 07:51:18Z dkatayev $ */ public class CreateFolderCommand extends FCKConnectorXMLOutput implements Command { public boolean execute(Context context) throws Exception { GenericWebAppContext webCtx = (GenericWebAppContext)context; HttpServletResponse response = webCtx.getResponse(); HttpServletRequest request = webCtx.getRequest(); String type = (String)context.get("Type"); if (type == null) type = ""; // // To limit browsing set Servlet init param "digitalAssetsPath" // // with desired JCR path // String rootFolderStr = // (String)context.get("org.exoplatform.frameworks.jcr.command.web.fckeditor.digitalAssetsPath" // ); // // if(rootFolderStr == null) // rootFolderStr = "/"; // // // set current folder // String currentFolderStr = (String)context.get("CurrentFolder"); // if(currentFolderStr == null) // currentFolderStr = ""; // else if(currentFolderStr.length() < rootFolderStr.length()) // currentFolderStr = rootFolderStr; // // String folderName = (String)context.get("NewFolderName"); // if(folderName == null) // throw new Exception("NewFolderName not defined"); // // String jcrMapping = (String)context.get(GenericWebAppContext.JCR_CONTENT_MAPPING); // if(jcrMapping == null) // jcrMapping = DisplayResourceCommand.DEFAULT_MAPPING; // // String digitalWS = (String)webCtx.get(AppConstants.DIGITAL_ASSETS_PROP); // if(digitalWS == null) // digitalWS = AppConstants.DEFAULT_DIGITAL_ASSETS_WS; // // webCtx.setCurrentWorkspace(digitalWS); // // Node currentFolder = (Node) webCtx.getSession().getItem(currentFolderStr); // Node newFolder = currentFolder.addNode(folderName, "nt:folder"); // currentFolder.save(); // // String url = request.getContextPath()+jcrMapping+"?"+ // "workspace="+digitalWS+ // "&path="+currentFolderStr; String workspace = (String)webCtx.get(AppConstants.DIGITAL_ASSETS_PROP); if (workspace == null) workspace = AppConstants.DEFAULT_DIGITAL_ASSETS_WS; String currentFolderStr = getCurrentFolderPath(webCtx); String folderName = (String)context.get("NewFolderName"); if (folderName == null) throw new Exception("NewFolderName not defined"); webCtx.setCurrentWorkspace(workspace); Node currentFolder = (Node)webCtx.getSession().getItem(currentFolderStr); Node newFolder = currentFolder.addNode(folderName, "nt:folder"); currentFolder.save(); String repoName = ((ManageableRepository)webCtx.getSession().getRepository()).getConfiguration().getName(); String url = request.getContextPath() + makeRESTPath(repoName, workspace, currentFolderStr); initRootElement("CreateFolder", type, newFolder.getPath() + "/", url); Document doc = rootElement.getOwnerDocument(); String retVal = "0"; Element errElement = doc.createElement("Error"); errElement.setAttribute("number", retVal); rootElement.appendChild(errElement); outRootElement(response); return false; } }