MkdirCommandExecutor.java
package cn.bluejoe.elfinder.controller.executors;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.json.JSONException;
import org.json.JSONObject;
import cn.bluejoe.elfinder.controller.executor.AbstractJsonCommandExecutor;
import cn.bluejoe.elfinder.controller.executor.FsItemEx;
import cn.bluejoe.elfinder.service.FsService;
import sk.iway.iwcm.Identity;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.common.FileBrowserTools;
import sk.iway.iwcm.i18n.Prop;
import sk.iway.iwcm.system.elfinder.IwcmFsVolume;
import sk.iway.iwcm.users.UsersDB;
public class MkdirCommandExecutor extends AbstractJsonCommandExecutor
{
FsService fsService;
Prop prop;
HttpServletRequest request;
JSONObject json;
@Override
public void execute(FsService fsService, HttpServletRequest request, ServletContext servletContext, JSONObject json)
throws Exception
{
this.fsService = fsService;
this.prop = Prop.getInstance(request);
this.request = request;
this.json = json;
String target = Tools.getStringValue(request.getParameter("target"), "");
String name = Tools.getStringValue(request.getParameter("name"), "");
String[] dirs = request.getParameterValues("dirs[]");
if (FileBrowserTools.hasForbiddenSymbol(name)) {
json.put("error", prop.getText("components.elfinder.commands.error.banned_character"));
return;
}
List<Map<String, Object>> added = new ArrayList<>();
if (Tools.isNotEmpty(target)) {
if (dirs != null && dirs.length > 0) {
for (String dir : dirs) {
Map<String, Object> fsItemEx = mkDir(target, dir);
if (fsItemEx != null) {
added.add(fsItemEx);
}
}
}
else if (Tools.isNotEmpty(name)) {
Map<String, Object> fsItemEx = mkDir(target, name);
if (fsItemEx != null) {
added.add(fsItemEx);
}
}
}
else {
json.put("error", prop.getText("target cannot be null"));
}
json.put("added", added.toArray());
}
private Map<String, Object> mkDir(String target, String name) throws IOException, JSONException
{
FsItemEx fsi = super.findItem(fsService, target);
Identity user = sk.iway.iwcm.system.elfinder.FsService.getCurrentUser();
if (user!=null && UsersDB.isFolderWritable(user.getWritableFolders(), fsi.getPath()))
{
// remove diacritics
name = IwcmFsVolume.removeSpecialChars(name, fsi);
FsItemEx dir = new FsItemEx(fsi, name);
dir.createFolder();
return getFsItemInfo(request, dir);
}
else
{
json.put("error", prop.getText("components.elfinder.commands.mkdir.error", fsi.getPath()));
//json.put("added", new Object[] {});
return null;
}
}
}